From eaaa5519bdb18ee31960e52e2be18267c02715c4 Mon Sep 17 00:00:00 2001 From: chenxi Date: Wed, 19 Nov 2025 08:08:22 -0500 Subject: [PATCH] Init gym --- Run_Full_Team.py | 13 + Run_One_vs_One.py | 14 + Run_Player.py | 18 + Run_Utils.py | 96 + Train.sh | 14 + agent/Agent.py | 306 +++ agent/Agent_Penalty.py | 88 + agent/Base_Agent.py | 47 + agent/__pycache__/Base_Agent.cpython-313.pyc | Bin 0 -> 3867 bytes behaviors/Behavior.py | 176 ++ behaviors/Head.py | 105 + behaviors/Poses.py | 97 + behaviors/Slot_Engine.py | 110 + .../__pycache__/Behavior.cpython-313.pyc | Bin 0 -> 9683 bytes behaviors/__pycache__/Head.cpython-313.pyc | Bin 0 -> 5423 bytes behaviors/__pycache__/Poses.cpython-313.pyc | Bin 0 -> 5361 bytes .../__pycache__/Slot_Engine.cpython-313.pyc | Bin 0 -> 6907 bytes behaviors/custom/Basic_Kick/Basic_Kick.py | 73 + behaviors/custom/Basic_Kick/Env.py | 201 ++ .../__pycache__/Basic_Kick.cpython-313.pyc | Bin 0 -> 5009 bytes behaviors/custom/Dribble/Dribble.py | 210 ++ behaviors/custom/Dribble/Env.py | 184 ++ .../__pycache__/Dribble.cpython-313.pyc | Bin 0 -> 9979 bytes .../Dribble/__pycache__/Env.cpython-313.pyc | Bin 0 -> 9170 bytes behaviors/custom/Dribble/dribble_R0.pkl | Bin 0 -> 24148 bytes behaviors/custom/Dribble/dribble_R1.pkl | Bin 0 -> 24148 bytes behaviors/custom/Dribble/dribble_R2.pkl | Bin 0 -> 24148 bytes behaviors/custom/Dribble/dribble_R3.pkl | Bin 0 -> 24148 bytes behaviors/custom/Dribble/dribble_R4.pkl | Bin 0 -> 24148 bytes behaviors/custom/Fall/Fall.py | 43 + .../Fall/__pycache__/Fall.cpython-313.pyc | Bin 0 -> 3160 bytes behaviors/custom/Fall/fall.pkl | Bin 0 -> 28854 bytes behaviors/custom/Get_Up/Get_Up.py | 68 + .../Get_Up/__pycache__/Get_Up.cpython-313.pyc | Bin 0 -> 4216 bytes behaviors/custom/Kick_RL/Env.py | 89 + behaviors/custom/Kick_RL/Kick_RL.py | 111 + .../Kick_RL/__pycache__/Env.cpython-313.pyc | Bin 0 -> 5215 bytes .../__pycache__/Kick_RL.cpython-313.pyc | Bin 0 -> 7190 bytes behaviors/custom/Kick_RL/kick_all.pkl | Bin 0 -> 37534 bytes behaviors/custom/Kick_RL/kick_r0.pkl | Bin 0 -> 37534 bytes behaviors/custom/Kick_RL/kick_r2.pkl | Bin 0 -> 37534 bytes behaviors/custom/Long_Kick/Env.py | 110 + behaviors/custom/Long_Kick/Long_Kick.py | 101 + .../custom/Long_Kick/T4_best_model.zip.pkl | Bin 0 -> 37534 bytes behaviors/custom/Nerul_Kick/Env.py | 111 + behaviors/custom/Nerul_Kick/Nerul_Kick.py | 106 + .../__pycache__/Env.cpython-313.pyc | Bin 0 -> 5553 bytes .../__pycache__/Nerul_Kick.cpython-313.pyc | Bin 0 -> 6731 bytes .../custom/Nerul_Kick/best_model.zip.pkl | Bin 0 -> 37790 bytes .../Nerul_Kick/long_kick_R0_00_26419200.pkl | Bin 0 -> 20820 bytes .../Nerul_Kick/long_kick_R1_00_8.4M.pkl | Bin 0 -> 20820 bytes .../Nerul_Kick/long_kick_R2_28262400.pkl | Bin 0 -> 20820 bytes .../Nerul_Kick/long_kick_R3_20275200.pkl | Bin 0 -> 20820 bytes .../Nerul_Kick/model_14336000_steps.zip.pkl | Bin 0 -> 37790 bytes .../Nerul_Kick/short_kick_R0_31_14.3M.pkl | Bin 0 -> 21076 bytes .../Nerul_Kick/short_kick_R1_05_10944000.pkl | Bin 0 -> 21076 bytes .../Nerul_Kick/short_kick_R2_01_14976000.pkl | Bin 0 -> 21076 bytes .../Nerul_Kick/short_kick_R3_14976000.pkl | Bin 0 -> 21076 bytes .../Nerul_Kick/short_kick_R4_14400000.pkl | Bin 0 -> 21076 bytes behaviors/custom/Sprint/Env.py | 183 ++ behaviors/custom/Sprint/Sprint.py | 178 ++ behaviors/custom/Sprint/Sprint_R0.pkl | Bin 0 -> 24148 bytes behaviors/custom/Sprint/Sprint_R1.pkl | Bin 0 -> 24148 bytes behaviors/custom/Sprint/Sprint_R2.pkl | Bin 0 -> 24148 bytes behaviors/custom/Sprint/Sprint_R3.pkl | Bin 0 -> 24148 bytes behaviors/custom/Sprint/Sprint_R4.pkl | Bin 0 -> 24148 bytes behaviors/custom/Step/Step.py | 59 + behaviors/custom/Step/Step_Generator.py | 75 + .../Step/__pycache__/Step.cpython-313.pyc | Bin 0 -> 3302 bytes .../Step_Generator.cpython-313.pyc | Bin 0 -> 3276 bytes behaviors/custom/Stop/Env.py | 197 ++ behaviors/custom/Stop/Stop.py | 69 + behaviors/custom/Stop/Stop_R1.pkl | Bin 0 -> 37534 bytes behaviors/custom/Stop/best_model.zip.pkl | Bin 0 -> 37534 bytes behaviors/custom/Walk/Env.py | 200 ++ behaviors/custom/Walk/Walk.py | 83 + .../Walk/__pycache__/Env.cpython-313.pyc | Bin 0 -> 10665 bytes .../Walk/__pycache__/Walk.cpython-313.pyc | Bin 0 -> 4347 bytes behaviors/custom/Walk/walk_R0.pkl | Bin 0 -> 20820 bytes behaviors/custom/Walk/walk_R1_R3.pkl | Bin 0 -> 20820 bytes behaviors/custom/Walk/walk_R2.pkl | Bin 0 -> 20820 bytes behaviors/custom/Walk/walk_R4.pkl | Bin 0 -> 20820 bytes behaviors/slot/common/Dive_Left.xml | 71 + behaviors/slot/common/Dive_Right.xml | 71 + behaviors/slot/common/Flip.xml | 12 + behaviors/slot/common/Squat.xml | 24 + behaviors/slot/r0/Get_Up_Back.xml | 148 ++ behaviors/slot/r0/Get_Up_Front.xml | 220 ++ behaviors/slot/r0/Kick_Motion.xml | 21 + behaviors/slot/r1/Get_Up_Back.xml | 148 ++ behaviors/slot/r1/Get_Up_Front.xml | 220 ++ behaviors/slot/r1/Kick_Motion.xml | 15 + behaviors/slot/r2/Get_Up_Back.xml | 148 ++ behaviors/slot/r2/Get_Up_Front.xml | 220 ++ behaviors/slot/r2/Kick_Motion.xml | 21 + behaviors/slot/r3/Get_Up_Back.xml | 148 ++ behaviors/slot/r3/Get_Up_Front.xml | 220 ++ behaviors/slot/r3/Kick_Motion.xml | 22 + behaviors/slot/r4/Get_Up_Back.xml | 148 ++ behaviors/slot/r4/Get_Up_Front.xml | 220 ++ behaviors/slot/r4/Kick_Motion.xml | 14 + bundle.sh | 83 + bundle/bundle.sh | 83 + communication/Radio.py | 306 +++ communication/Server_Comm.py | 285 ++ communication/World_Parser.py | 430 +++ .../__pycache__/Radio.cpython-313.pyc | Bin 0 -> 14747 bytes .../__pycache__/Server_Comm.cpython-313.pyc | Bin 0 -> 16599 bytes .../__pycache__/World_Parser.cpython-313.pyc | Bin 0 -> 25582 bytes config.json | 38 + cpp/a_star/Makefile | 14 + cpp/a_star/a_star.c_info | Bin 0 -> 25 bytes cpp/a_star/a_star.cpp | 918 +++++++ cpp/a_star/a_star.h | 26 + cpp/a_star/a_star.so | Bin 0 -> 344720 bytes cpp/a_star/debug_main.cc | 37 + cpp/a_star/expansion_groups.h | 6 + cpp/a_star/expansion_groups.py | 60 + cpp/a_star/lib_main.cpp | 43 + cpp/ball_predictor/Makefile | 14 + cpp/ball_predictor/ball_predictor.c_info | Bin 0 -> 25 bytes cpp/ball_predictor/ball_predictor.cpp | 104 + cpp/ball_predictor/ball_predictor.h | 10 + cpp/ball_predictor/ball_predictor.so | Bin 0 -> 222832 bytes cpp/ball_predictor/debug_main.cc | 54 + cpp/ball_predictor/lib_main.cpp | 100 + cpp/localization/Field.cpp | 532 ++++ cpp/localization/Field.h | 503 ++++ cpp/localization/FieldNoise.cpp | 104 + cpp/localization/FieldNoise.h | 91 + cpp/localization/Geometry.cpp | 344 +++ cpp/localization/Geometry.h | 71 + cpp/localization/Line6f.cpp | 232 ++ cpp/localization/Line6f.h | 185 ++ cpp/localization/LocalizerV2.cpp | 1249 +++++++++ cpp/localization/LocalizerV2.h | 379 +++ cpp/localization/Makefile | 15 + cpp/localization/Matrix4D.cpp | 303 +++ cpp/localization/Matrix4D.h | 224 ++ cpp/localization/RobovizLogger.cpp | 131 + cpp/localization/RobovizLogger.h | 58 + cpp/localization/Singleton.h | 20 + cpp/localization/Vector3f.cpp | 197 ++ cpp/localization/Vector3f.h | 187 ++ cpp/localization/World.h | 56 + cpp/localization/debug_main.cc | 196 ++ cpp/localization/lib_main.cpp | 182 ++ cpp/localization/localization.c_info | Bin 0 -> 25 bytes cpp/localization/localization.so | Bin 0 -> 378392 bytes cpp/localization/robovizdraw.h | 208 ++ example.py | 48 + kill.sh | 2 + logs/2025-09-26_10.39.28__RRPVPH/Gym_1.log | 2 + logs/2025-11-04_20.30.48__CWVDGG/Gym_1.log | 8 + logs/2025-11-04_20.30.49__ACGLGO/Gym_1.log | 56 + logs/2025-11-04_20.30.49__HFYGJP/Gym_1.log | 8 + logs/2025-11-04_20.31.56__CDAPGK/Gym_1.log | 936 +++++++ logs/2025-11-04_20.31.56__FCJYEG/Gym_1.log | 888 +++++++ logs/2025-11-04_20.31.56__FRMTHI/Gym_1.log | 954 +++++++ logs/2025-11-04_20.31.56__NDEZAL/Gym_1.log | 1073 ++++++++ logs/2025-11-04_20.31.56__POEISF/Gym_1.log | 818 ++++++ logs/2025-11-04_20.31.56__UCVIPQ/Gym_1.log | 750 ++++++ logs/2025-11-04_20.31.56__WVAFON/Gym_1.log | 952 +++++++ logs/2025-11-04_20.31.57__JLPTYY/Gym_1.log | 939 +++++++ logs/2025-11-04_20.34.32__RFNPED/Gym_1.log | 19 + logs/2025-11-04_20.34.34__SJDOLF/Gym_1.log | 19 + logs/2025-11-04_20.34.35__PAEJLK/Gym_1.log | 21 + logs/2025-11-04_20.34.36__AEOPHS/Gym_1.log | 37 + logs/2025-11-04_20.34.36__CBVZIH/Gym_1.log | 11 + logs/2025-11-04_20.34.36__YCEEDM/Gym_1.log | 20 + logs/2025-11-04_20.34.37__QSOHFZ/Gym_1.log | 21 + logs/2025-11-04_20.34.37__SXRRET/Gym_1.log | 41 + logs/2025-11-04_20.34.42__VZTCZH/Gym_1.log | 1 + logs/2025-11-04_20.36.18__ZIOHPA/Gym_1.log | 1991 ++++++++++++++ logs/2025-11-04_20.36.21__NVECSJ/Gym_1.log | 1781 +++++++++++++ logs/2025-11-04_20.36.21__VOJKLN/Gym_1.log | 1916 ++++++++++++++ logs/2025-11-04_20.36.22__EKCNHP/Gym_1.log | 2294 +++++++++++++++++ logs/2025-11-04_20.36.22__JPDNGY/Gym_1.log | 2189 ++++++++++++++++ logs/2025-11-04_20.36.22__RCZFIU/Gym_1.log | 1872 ++++++++++++++ logs/2025-11-04_20.36.23__SKQERR/Gym_1.log | 2069 +++++++++++++++ logs/2025-11-04_20.36.23__TGZPRQ/Gym_1.log | 2154 ++++++++++++++++ logs/2025-11-05_00.16.32__GMKFYN/Gym_1.log | 2 + logs/2025-11-05_00.17.35__NYXFMK/Gym_1.log | 2 + logs/2025-11-05_00.17.39__JUOGMJ/Gym_1.log | 4 + logs/2025-11-05_00.18.25__BWAREY/Gym_1.log | 4 + logs/2025-11-05_00.19.30__YTALDC/Gym_1.log | 1 + logs/2025-11-05_00.19.41__YOHMIM/Gym_1.log | 1 + logs/2025-11-05_00.21.56__ROCYYE/Gym_1.log | 1 + logs/Logger.py | 48 + logs/__pycache__/Logger.cpython-313.pyc | Bin 0 -> 2702 bytes math_ops/Inverse_Kinematics.py | 242 ++ math_ops/Math_Ops.py | 361 +++ math_ops/Matrix_3x3.py | 351 +++ math_ops/Matrix_4x4.py | 441 ++++ math_ops/Neural_Network.py | 28 + .../Inverse_Kinematics.cpython-313.pyc | Bin 0 -> 12121 bytes math_ops/__pycache__/Math_Ops.cpython-313.pyc | Bin 0 -> 19649 bytes .../__pycache__/Matrix_3x3.cpython-313.pyc | Bin 0 -> 13856 bytes .../__pycache__/Matrix_4x4.cpython-313.pyc | Bin 0 -> 17604 bytes .../Neural_Network.cpython-313.pyc | Bin 0 -> 1177 bytes scripts/commons/Script.py | 307 +++ scripts/commons/Server.py | 60 + scripts/commons/Train_Base.py | 494 ++++ scripts/commons/UI.py | 302 +++ .../__pycache__/Script.cpython-313.pyc | Bin 0 -> 15758 bytes .../__pycache__/Server.cpython-313.pyc | Bin 0 -> 3955 bytes .../__pycache__/Train_Base.cpython-313.pyc | Bin 0 -> 25684 bytes .../commons/__pycache__/UI.cpython-313.pyc | Bin 0 -> 12236 bytes scripts/gyms/Dribble.py | 372 +++ scripts/gyms/Kick_10M.py | 324 +++ scripts/gyms/Kick_15M.py | 326 +++ scripts/gyms/Kick_20M.py | 322 +++ scripts/gyms/Kick_3M.py | 359 +++ scripts/gyms/Kick_5M.py | 343 +++ .../gyms/__pycache__/Dribble.cpython-313.pyc | Bin 0 -> 23320 bytes scripts/utils/Beam.py | 60 + scripts/utils/Behaviors.py | 55 + scripts/utils/Drawings.py | 35 + scripts/utils/Dribble.py | 54 + scripts/utils/Fwd_Kinematics.py | 115 + scripts/utils/Get_Up.py | 45 + scripts/utils/IMU.py | 179 ++ scripts/utils/Inv_Kinematics.py | 146 ++ scripts/utils/Joints.py | 151 ++ scripts/utils/Kick.py | 53 + scripts/utils/Localization.py | 103 + scripts/utils/Pathfinding.py | 203 ++ scripts/utils/Radio_Localization.py | 97 + scripts/utils/Server.py | 148 ++ scripts/utils/Team_Communication.py | 73 + .../utils/__pycache__/Server.cpython-313.pyc | Bin 0 -> 9666 bytes start.sh | 9 + start_debug.sh | 9 + start_fat_proxy.sh | 9 + start_fat_proxy_debug.sh | 9 + start_penalty.sh | 8 + start_penalty_debug.sh | 8 + world/Robot.py | 535 ++++ world/World.py | 431 ++++ world/__pycache__/Robot.cpython-313.pyc | Bin 0 -> 30482 bytes world/__pycache__/World.cpython-313.pyc | Bin 0 -> 22202 bytes world/commons/Body_Part.py | 7 + world/commons/Draw.py | 345 +++ world/commons/Joint_Info.py | 24 + world/commons/Other_Robot.py | 28 + world/commons/Path_Manager.py | 583 +++++ .../__pycache__/Body_Part.cpython-313.pyc | Bin 0 -> 739 bytes .../commons/__pycache__/Draw.cpython-313.pyc | Bin 0 -> 15467 bytes .../__pycache__/Joint_Info.cpython-313.pyc | Bin 0 -> 2111 bytes .../__pycache__/Other_Robot.cpython-313.pyc | Bin 0 -> 1405 bytes .../__pycache__/Path_Manager.cpython-313.pyc | Bin 0 -> 28849 bytes world/commons/robots/nao0.xml | 165 ++ world/commons/robots/nao1.xml | 161 ++ world/commons/robots/nao2.xml | 164 ++ world/commons/robots/nao3.xml | 161 ++ world/commons/robots/nao4.xml | 175 ++ 256 files changed, 46657 insertions(+) create mode 100644 Run_Full_Team.py create mode 100644 Run_One_vs_One.py create mode 100644 Run_Player.py create mode 100644 Run_Utils.py create mode 100755 Train.sh create mode 100644 agent/Agent.py create mode 100644 agent/Agent_Penalty.py create mode 100644 agent/Base_Agent.py create mode 100644 agent/__pycache__/Base_Agent.cpython-313.pyc create mode 100644 behaviors/Behavior.py create mode 100644 behaviors/Head.py create mode 100644 behaviors/Poses.py create mode 100644 behaviors/Slot_Engine.py create mode 100644 behaviors/__pycache__/Behavior.cpython-313.pyc create mode 100644 behaviors/__pycache__/Head.cpython-313.pyc create mode 100644 behaviors/__pycache__/Poses.cpython-313.pyc create mode 100644 behaviors/__pycache__/Slot_Engine.cpython-313.pyc create mode 100644 behaviors/custom/Basic_Kick/Basic_Kick.py create mode 100644 behaviors/custom/Basic_Kick/Env.py create mode 100644 behaviors/custom/Basic_Kick/__pycache__/Basic_Kick.cpython-313.pyc create mode 100644 behaviors/custom/Dribble/Dribble.py create mode 100644 behaviors/custom/Dribble/Env.py create mode 100644 behaviors/custom/Dribble/__pycache__/Dribble.cpython-313.pyc create mode 100644 behaviors/custom/Dribble/__pycache__/Env.cpython-313.pyc create mode 100644 behaviors/custom/Dribble/dribble_R0.pkl create mode 100644 behaviors/custom/Dribble/dribble_R1.pkl create mode 100644 behaviors/custom/Dribble/dribble_R2.pkl create mode 100644 behaviors/custom/Dribble/dribble_R3.pkl create mode 100644 behaviors/custom/Dribble/dribble_R4.pkl create mode 100644 behaviors/custom/Fall/Fall.py create mode 100644 behaviors/custom/Fall/__pycache__/Fall.cpython-313.pyc create mode 100644 behaviors/custom/Fall/fall.pkl create mode 100644 behaviors/custom/Get_Up/Get_Up.py create mode 100644 behaviors/custom/Get_Up/__pycache__/Get_Up.cpython-313.pyc create mode 100644 behaviors/custom/Kick_RL/Env.py create mode 100644 behaviors/custom/Kick_RL/Kick_RL.py create mode 100644 behaviors/custom/Kick_RL/__pycache__/Env.cpython-313.pyc create mode 100644 behaviors/custom/Kick_RL/__pycache__/Kick_RL.cpython-313.pyc create mode 100644 behaviors/custom/Kick_RL/kick_all.pkl create mode 100644 behaviors/custom/Kick_RL/kick_r0.pkl create mode 100644 behaviors/custom/Kick_RL/kick_r2.pkl create mode 100644 behaviors/custom/Long_Kick/Env.py create mode 100644 behaviors/custom/Long_Kick/Long_Kick.py create mode 100644 behaviors/custom/Long_Kick/T4_best_model.zip.pkl create mode 100644 behaviors/custom/Nerul_Kick/Env.py create mode 100644 behaviors/custom/Nerul_Kick/Nerul_Kick.py create mode 100644 behaviors/custom/Nerul_Kick/__pycache__/Env.cpython-313.pyc create mode 100644 behaviors/custom/Nerul_Kick/__pycache__/Nerul_Kick.cpython-313.pyc create mode 100644 behaviors/custom/Nerul_Kick/best_model.zip.pkl create mode 100644 behaviors/custom/Nerul_Kick/long_kick_R0_00_26419200.pkl create mode 100644 behaviors/custom/Nerul_Kick/long_kick_R1_00_8.4M.pkl create mode 100644 behaviors/custom/Nerul_Kick/long_kick_R2_28262400.pkl create mode 100644 behaviors/custom/Nerul_Kick/long_kick_R3_20275200.pkl create mode 100644 behaviors/custom/Nerul_Kick/model_14336000_steps.zip.pkl create mode 100644 behaviors/custom/Nerul_Kick/short_kick_R0_31_14.3M.pkl create mode 100644 behaviors/custom/Nerul_Kick/short_kick_R1_05_10944000.pkl create mode 100644 behaviors/custom/Nerul_Kick/short_kick_R2_01_14976000.pkl create mode 100644 behaviors/custom/Nerul_Kick/short_kick_R3_14976000.pkl create mode 100644 behaviors/custom/Nerul_Kick/short_kick_R4_14400000.pkl create mode 100644 behaviors/custom/Sprint/Env.py create mode 100644 behaviors/custom/Sprint/Sprint.py create mode 100644 behaviors/custom/Sprint/Sprint_R0.pkl create mode 100644 behaviors/custom/Sprint/Sprint_R1.pkl create mode 100644 behaviors/custom/Sprint/Sprint_R2.pkl create mode 100644 behaviors/custom/Sprint/Sprint_R3.pkl create mode 100644 behaviors/custom/Sprint/Sprint_R4.pkl create mode 100644 behaviors/custom/Step/Step.py create mode 100644 behaviors/custom/Step/Step_Generator.py create mode 100644 behaviors/custom/Step/__pycache__/Step.cpython-313.pyc create mode 100644 behaviors/custom/Step/__pycache__/Step_Generator.cpython-313.pyc create mode 100644 behaviors/custom/Stop/Env.py create mode 100644 behaviors/custom/Stop/Stop.py create mode 100644 behaviors/custom/Stop/Stop_R1.pkl create mode 100644 behaviors/custom/Stop/best_model.zip.pkl create mode 100644 behaviors/custom/Walk/Env.py create mode 100644 behaviors/custom/Walk/Walk.py create mode 100644 behaviors/custom/Walk/__pycache__/Env.cpython-313.pyc create mode 100644 behaviors/custom/Walk/__pycache__/Walk.cpython-313.pyc create mode 100644 behaviors/custom/Walk/walk_R0.pkl create mode 100644 behaviors/custom/Walk/walk_R1_R3.pkl create mode 100644 behaviors/custom/Walk/walk_R2.pkl create mode 100644 behaviors/custom/Walk/walk_R4.pkl create mode 100644 behaviors/slot/common/Dive_Left.xml create mode 100644 behaviors/slot/common/Dive_Right.xml create mode 100644 behaviors/slot/common/Flip.xml create mode 100644 behaviors/slot/common/Squat.xml create mode 100644 behaviors/slot/r0/Get_Up_Back.xml create mode 100644 behaviors/slot/r0/Get_Up_Front.xml create mode 100644 behaviors/slot/r0/Kick_Motion.xml create mode 100644 behaviors/slot/r1/Get_Up_Back.xml create mode 100644 behaviors/slot/r1/Get_Up_Front.xml create mode 100644 behaviors/slot/r1/Kick_Motion.xml create mode 100644 behaviors/slot/r2/Get_Up_Back.xml create mode 100644 behaviors/slot/r2/Get_Up_Front.xml create mode 100644 behaviors/slot/r2/Kick_Motion.xml create mode 100644 behaviors/slot/r3/Get_Up_Back.xml create mode 100644 behaviors/slot/r3/Get_Up_Front.xml create mode 100644 behaviors/slot/r3/Kick_Motion.xml create mode 100644 behaviors/slot/r4/Get_Up_Back.xml create mode 100644 behaviors/slot/r4/Get_Up_Front.xml create mode 100644 behaviors/slot/r4/Kick_Motion.xml create mode 100755 bundle.sh create mode 100755 bundle/bundle.sh create mode 100644 communication/Radio.py create mode 100644 communication/Server_Comm.py create mode 100644 communication/World_Parser.py create mode 100644 communication/__pycache__/Radio.cpython-313.pyc create mode 100644 communication/__pycache__/Server_Comm.cpython-313.pyc create mode 100644 communication/__pycache__/World_Parser.cpython-313.pyc create mode 100644 config.json create mode 100644 cpp/a_star/Makefile create mode 100644 cpp/a_star/a_star.c_info create mode 100644 cpp/a_star/a_star.cpp create mode 100644 cpp/a_star/a_star.h create mode 100755 cpp/a_star/a_star.so create mode 100644 cpp/a_star/debug_main.cc create mode 100644 cpp/a_star/expansion_groups.h create mode 100644 cpp/a_star/expansion_groups.py create mode 100644 cpp/a_star/lib_main.cpp create mode 100644 cpp/ball_predictor/Makefile create mode 100644 cpp/ball_predictor/ball_predictor.c_info create mode 100644 cpp/ball_predictor/ball_predictor.cpp create mode 100644 cpp/ball_predictor/ball_predictor.h create mode 100755 cpp/ball_predictor/ball_predictor.so create mode 100644 cpp/ball_predictor/debug_main.cc create mode 100644 cpp/ball_predictor/lib_main.cpp create mode 100644 cpp/localization/Field.cpp create mode 100644 cpp/localization/Field.h create mode 100644 cpp/localization/FieldNoise.cpp create mode 100644 cpp/localization/FieldNoise.h create mode 100644 cpp/localization/Geometry.cpp create mode 100644 cpp/localization/Geometry.h create mode 100644 cpp/localization/Line6f.cpp create mode 100644 cpp/localization/Line6f.h create mode 100644 cpp/localization/LocalizerV2.cpp create mode 100644 cpp/localization/LocalizerV2.h create mode 100644 cpp/localization/Makefile create mode 100644 cpp/localization/Matrix4D.cpp create mode 100644 cpp/localization/Matrix4D.h create mode 100644 cpp/localization/RobovizLogger.cpp create mode 100644 cpp/localization/RobovizLogger.h create mode 100644 cpp/localization/Singleton.h create mode 100644 cpp/localization/Vector3f.cpp create mode 100644 cpp/localization/Vector3f.h create mode 100644 cpp/localization/World.h create mode 100644 cpp/localization/debug_main.cc create mode 100644 cpp/localization/lib_main.cpp create mode 100644 cpp/localization/localization.c_info create mode 100755 cpp/localization/localization.so create mode 100644 cpp/localization/robovizdraw.h create mode 100644 example.py create mode 100755 kill.sh create mode 100644 logs/2025-09-26_10.39.28__RRPVPH/Gym_1.log create mode 100644 logs/2025-11-04_20.30.48__CWVDGG/Gym_1.log create mode 100644 logs/2025-11-04_20.30.49__ACGLGO/Gym_1.log create mode 100644 logs/2025-11-04_20.30.49__HFYGJP/Gym_1.log create mode 100644 logs/2025-11-04_20.31.56__CDAPGK/Gym_1.log create mode 100644 logs/2025-11-04_20.31.56__FCJYEG/Gym_1.log create mode 100644 logs/2025-11-04_20.31.56__FRMTHI/Gym_1.log create mode 100644 logs/2025-11-04_20.31.56__NDEZAL/Gym_1.log create mode 100644 logs/2025-11-04_20.31.56__POEISF/Gym_1.log create mode 100644 logs/2025-11-04_20.31.56__UCVIPQ/Gym_1.log create mode 100644 logs/2025-11-04_20.31.56__WVAFON/Gym_1.log create mode 100644 logs/2025-11-04_20.31.57__JLPTYY/Gym_1.log create mode 100644 logs/2025-11-04_20.34.32__RFNPED/Gym_1.log create mode 100644 logs/2025-11-04_20.34.34__SJDOLF/Gym_1.log create mode 100644 logs/2025-11-04_20.34.35__PAEJLK/Gym_1.log create mode 100644 logs/2025-11-04_20.34.36__AEOPHS/Gym_1.log create mode 100644 logs/2025-11-04_20.34.36__CBVZIH/Gym_1.log create mode 100644 logs/2025-11-04_20.34.36__YCEEDM/Gym_1.log create mode 100644 logs/2025-11-04_20.34.37__QSOHFZ/Gym_1.log create mode 100644 logs/2025-11-04_20.34.37__SXRRET/Gym_1.log create mode 100644 logs/2025-11-04_20.34.42__VZTCZH/Gym_1.log create mode 100644 logs/2025-11-04_20.36.18__ZIOHPA/Gym_1.log create mode 100644 logs/2025-11-04_20.36.21__NVECSJ/Gym_1.log create mode 100644 logs/2025-11-04_20.36.21__VOJKLN/Gym_1.log create mode 100644 logs/2025-11-04_20.36.22__EKCNHP/Gym_1.log create mode 100644 logs/2025-11-04_20.36.22__JPDNGY/Gym_1.log create mode 100644 logs/2025-11-04_20.36.22__RCZFIU/Gym_1.log create mode 100644 logs/2025-11-04_20.36.23__SKQERR/Gym_1.log create mode 100644 logs/2025-11-04_20.36.23__TGZPRQ/Gym_1.log create mode 100644 logs/2025-11-05_00.16.32__GMKFYN/Gym_1.log create mode 100644 logs/2025-11-05_00.17.35__NYXFMK/Gym_1.log create mode 100644 logs/2025-11-05_00.17.39__JUOGMJ/Gym_1.log create mode 100644 logs/2025-11-05_00.18.25__BWAREY/Gym_1.log create mode 100644 logs/2025-11-05_00.19.30__YTALDC/Gym_1.log create mode 100644 logs/2025-11-05_00.19.41__YOHMIM/Gym_1.log create mode 100644 logs/2025-11-05_00.21.56__ROCYYE/Gym_1.log create mode 100644 logs/Logger.py create mode 100644 logs/__pycache__/Logger.cpython-313.pyc create mode 100644 math_ops/Inverse_Kinematics.py create mode 100644 math_ops/Math_Ops.py create mode 100644 math_ops/Matrix_3x3.py create mode 100644 math_ops/Matrix_4x4.py create mode 100644 math_ops/Neural_Network.py create mode 100644 math_ops/__pycache__/Inverse_Kinematics.cpython-313.pyc create mode 100644 math_ops/__pycache__/Math_Ops.cpython-313.pyc create mode 100644 math_ops/__pycache__/Matrix_3x3.cpython-313.pyc create mode 100644 math_ops/__pycache__/Matrix_4x4.cpython-313.pyc create mode 100644 math_ops/__pycache__/Neural_Network.cpython-313.pyc create mode 100644 scripts/commons/Script.py create mode 100644 scripts/commons/Server.py create mode 100644 scripts/commons/Train_Base.py create mode 100644 scripts/commons/UI.py create mode 100644 scripts/commons/__pycache__/Script.cpython-313.pyc create mode 100644 scripts/commons/__pycache__/Server.cpython-313.pyc create mode 100644 scripts/commons/__pycache__/Train_Base.cpython-313.pyc create mode 100644 scripts/commons/__pycache__/UI.cpython-313.pyc create mode 100644 scripts/gyms/Dribble.py create mode 100644 scripts/gyms/Kick_10M.py create mode 100644 scripts/gyms/Kick_15M.py create mode 100644 scripts/gyms/Kick_20M.py create mode 100644 scripts/gyms/Kick_3M.py create mode 100644 scripts/gyms/Kick_5M.py create mode 100644 scripts/gyms/__pycache__/Dribble.cpython-313.pyc create mode 100644 scripts/utils/Beam.py create mode 100644 scripts/utils/Behaviors.py create mode 100644 scripts/utils/Drawings.py create mode 100644 scripts/utils/Dribble.py create mode 100644 scripts/utils/Fwd_Kinematics.py create mode 100644 scripts/utils/Get_Up.py create mode 100644 scripts/utils/IMU.py create mode 100644 scripts/utils/Inv_Kinematics.py create mode 100644 scripts/utils/Joints.py create mode 100644 scripts/utils/Kick.py create mode 100644 scripts/utils/Localization.py create mode 100644 scripts/utils/Pathfinding.py create mode 100644 scripts/utils/Radio_Localization.py create mode 100644 scripts/utils/Server.py create mode 100644 scripts/utils/Team_Communication.py create mode 100644 scripts/utils/__pycache__/Server.cpython-313.pyc create mode 100755 start.sh create mode 100755 start_debug.sh create mode 100755 start_fat_proxy.sh create mode 100755 start_fat_proxy_debug.sh create mode 100755 start_penalty.sh create mode 100755 start_penalty_debug.sh create mode 100644 world/Robot.py create mode 100644 world/World.py create mode 100644 world/__pycache__/Robot.cpython-313.pyc create mode 100644 world/__pycache__/World.cpython-313.pyc create mode 100644 world/commons/Body_Part.py create mode 100644 world/commons/Draw.py create mode 100644 world/commons/Joint_Info.py create mode 100644 world/commons/Other_Robot.py create mode 100644 world/commons/Path_Manager.py create mode 100644 world/commons/__pycache__/Body_Part.cpython-313.pyc create mode 100644 world/commons/__pycache__/Draw.cpython-313.pyc create mode 100644 world/commons/__pycache__/Joint_Info.cpython-313.pyc create mode 100644 world/commons/__pycache__/Other_Robot.cpython-313.pyc create mode 100644 world/commons/__pycache__/Path_Manager.cpython-313.pyc create mode 100644 world/commons/robots/nao0.xml create mode 100644 world/commons/robots/nao1.xml create mode 100644 world/commons/robots/nao2.xml create mode 100644 world/commons/robots/nao3.xml create mode 100644 world/commons/robots/nao4.xml diff --git a/Run_Full_Team.py b/Run_Full_Team.py new file mode 100644 index 0000000..74587ef --- /dev/null +++ b/Run_Full_Team.py @@ -0,0 +1,13 @@ +from scripts.commons.Script import Script +script = Script() # Initialize: load config file, parse arguments, build cpp modules +a = script.args + +from agent.Agent import Agent + +# Args: Server IP, Agent Port, Monitor Port, Uniform No., Team name, Enable Log, Enable Draw +team_args = ((a.i, a.p, a.m, u, a.t, True, True) for u in range(1,12)) +script.batch_create(Agent,team_args) + +while True: + script.batch_execute_agent() + script.batch_receive() diff --git a/Run_One_vs_One.py b/Run_One_vs_One.py new file mode 100644 index 0000000..98aed42 --- /dev/null +++ b/Run_One_vs_One.py @@ -0,0 +1,14 @@ +from scripts.commons.Script import Script +script = Script() # Initialize: load config file, parse arguments, build cpp modules +a = script.args + +from agent.Agent import Agent + +# Args: Server IP, Agent Port, Monitor Port, Uniform No., Team name, Enable Log, Enable Draw +script.batch_create(Agent, ((a.i, a.p, a.m, a.u, a.t, True, True),)) #one player for home team +script.batch_create(Agent, ((a.i, a.p, a.m, a.u, "Opponent", True, True),)) #one player for away team + + +while True: + script.batch_execute_agent() + script.batch_receive() diff --git a/Run_Player.py b/Run_Player.py new file mode 100644 index 0000000..46419b8 --- /dev/null +++ b/Run_Player.py @@ -0,0 +1,18 @@ +from scripts.commons.Script import Script +script = Script(cpp_builder_unum=1) # Initialize: load config file, parse arguments, build cpp modules +a = script.args + +if a.P: # penalty shootout + from agent.Agent_Penalty import Agent +else: # normal agent + from agent.Agent import Agent + +# Args: Server IP, Agent Port, Monitor Port, Uniform No., Team name, Enable Log, Enable Draw, Wait for Server, is magmaFatProxy +if a.D: # debug mode + player = Agent(a.i, a.p, a.m, a.u, a.t, True, True, False, a.F) +else: + player = Agent(a.i, a.p, None, a.u, a.t, False, False, False, a.F) + +while True: + player.think_and_send() + player.scom.receive() diff --git a/Run_Utils.py b/Run_Utils.py new file mode 100644 index 0000000..66f7e21 --- /dev/null +++ b/Run_Utils.py @@ -0,0 +1,96 @@ +def main(): + + from scripts.commons.Script import Script + script = Script() #Initialize: load config file, parse arguments, build cpp modules (warns the user about inconsistencies before choosing a test script) + + # Allows using local version of StableBaselines3 (e.g. https://github.com/m-abr/Adaptive-Symmetry-Learning) + # place the 'stable-baselines3' folder in the parent directory of this project + import sys + from os.path import dirname, abspath, join + sys.path.insert( 0, join( dirname(dirname( abspath(__file__) )), "stable-baselines3") ) + + from scripts.commons.UI import UI + from os.path import isfile, join, realpath, dirname + from os import listdir, getcwd + from importlib import import_module + + _cwd = realpath( join(getcwd(), dirname(__file__))) + gyms_path = _cwd + "/scripts/gyms/" + utils_path = _cwd + "/scripts/utils/" + exclusions = ["__init__.py"] + + utils = sorted([f[:-3] for f in listdir(utils_path) if isfile(join(utils_path, f)) and f.endswith(".py") and f not in exclusions], key=lambda x: (x != "Server", x)) + gyms = sorted([f[:-3] for f in listdir(gyms_path ) if isfile(join(gyms_path , f)) and f.endswith(".py") and f not in exclusions]) + + while True: + _, col_idx, col = UI.print_table( [utils, gyms], ["Demos & Tests & Utils","Gyms"], cols_per_title=[2,1], numbering=[True]*2, prompt='Choose script (ctrl+c to exit): ' ) + + is_gym = False + if col == 0: + chosen = ("scripts.utils." , utils[col_idx]) + elif col == 1: + chosen = ("scripts.gyms." , gyms[col_idx]) + is_gym = True + + cls_name = chosen[1] + mod = import_module(chosen[0]+chosen[1]) + + ''' + An imported script should not automatically execute the main code because: + - Multiprocessing methods, such as 'forkserver' and 'spawn', will execute the main code in every child + - The script can only be called once unless it is reloaded + ''' + if not is_gym: + ''' + Utils receive a script support object with user-defined arguments and useful methods + Each util must implement an execute() method, which may or may not return + ''' + from world.commons.Draw import Draw + from agent.Base_Agent import Base_Agent + obj = getattr(mod,cls_name)(script) + try: + obj.execute() # Util may return normally or through KeyboardInterrupt + except KeyboardInterrupt: + print("\nctrl+c pressed, returning...\n") + Draw.clear_all() # clear all drawings + Base_Agent.terminate_all() # close all server sockets + monitor socket + script.players = [] # clear list of players created through batch commands + del obj + + else: + ''' + Gyms must implement a class Train() which is initialized with user-defined arguments and implements: + train() - method to run the optimization and save a new model + test(folder_dir, folder_name, model_file) - method to load an existing model and test it + ''' + from scripts.commons.Train_Base import Train_Base + + print("\nBefore using GYMS, make sure all server parameters are set correctly") + print("(sync mode should be 'On', real time should be 'Off', cheats should be 'On', ...)") + print("To change these parameters go to the previous menu, and select Server\n") + print("Also, GYMS start their own servers, so don't run any server manually") + + while True: + try: + idx = UI.print_table([["Train","Test","Retrain"]], numbering=[True], prompt='Choose option (ctrl+c to return): ')[0] + except KeyboardInterrupt: + print() + break + + if idx == 0: + mod.Train(script).train(dict()) + else: + model_info = Train_Base.prompt_user_for_model() + if model_info is not None and idx == 1: + mod.Train(script).test(model_info) + elif model_info is not None: + mod.Train(script).train(model_info) + + +# allow child processes to bypass this file +if __name__ == "__main__": + try: + main() + except KeyboardInterrupt: + print("\nctrl+c pressed, exiting...") + exit() \ No newline at end of file diff --git a/Train.sh b/Train.sh new file mode 100755 index 0000000..ab00f89 --- /dev/null +++ b/Train.sh @@ -0,0 +1,14 @@ +#!/bin/bash +source /home/constantine/Downloads/Anaconda/etc/profile.d/conda.sh +conda activate FCP + +export MKL_SERVICE_FORCE_INTEL=1 +export MKL_THREADING_LAYER=GNU +export LD_LIBRARY_PATH="/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH" + +pkill -f rcssserver3d 2>/dev/null || true +pkill -f simspark 2>/dev/null || true + +sleep 2 + +python Run_Utils.py \ No newline at end of file diff --git a/agent/Agent.py b/agent/Agent.py new file mode 100644 index 0000000..d033a68 --- /dev/null +++ b/agent/Agent.py @@ -0,0 +1,306 @@ +from agent.Base_Agent import Base_Agent +from math_ops.Math_Ops import Math_Ops as M +import math +import numpy as np + + +class Agent(Base_Agent): + def __init__(self, host:str, agent_port:int, monitor_port:int, unum:int, + team_name:str, enable_log, enable_draw, wait_for_server=True, is_fat_proxy=False) -> None: + + # define robot type + robot_type = (1,1,1,1,2,3,3,3,4,4,4)[unum-1] + + # Initialize base agent + # Args: Server IP, Agent Port, Monitor Port, Uniform No., Robot Type, Team Name, Enable Log, Enable Draw, play mode correction, Wait for Server, Hear Callback + super().__init__(host, agent_port, monitor_port, unum, robot_type, team_name, enable_log, enable_draw, True, wait_for_server, None) + + self.enable_draw = enable_draw + self.state = 0 # 0-Normal, 1-Getting up, 2-Kicking + self.kick_direction = 0 + self.kick_distance = 0 + self.fat_proxy_cmd = "" if is_fat_proxy else None + self.fat_proxy_walk = np.zeros(3) # filtered walk parameters for fat proxy + + self.init_pos = ([-14,0],[-9,-5],[-9,0],[-9,5],[-5,-5],[-5,0],[-5,5],[-1,-6],[-1,-2.5],[-1,2.5],[-1,6])[unum-1] # initial formation + + + def beam(self, avoid_center_circle=False): + r = self.world.robot + pos = self.init_pos[:] # copy position list + self.state = 0 + + # Avoid center circle by moving the player back + if avoid_center_circle and np.linalg.norm(self.init_pos) < 2.5: + pos[0] = -2.3 + + if np.linalg.norm(pos - r.loc_head_position[:2]) > 0.1 or self.behavior.is_ready("Get_Up"): + self.scom.commit_beam(pos, M.vector_angle((-pos[0],-pos[1]))) # beam to initial position, face coordinate (0,0) + else: + if self.fat_proxy_cmd is None: # normal behavior + self.behavior.execute("Zero_Bent_Knees_Auto_Head") + else: # fat proxy behavior + self.fat_proxy_cmd += "(proxy dash 0 0 0)" + self.fat_proxy_walk = np.zeros(3) # reset fat proxy walk + + + def move(self, target_2d=(0,0), orientation=None, is_orientation_absolute=True, + avoid_obstacles=True, priority_unums=[], is_aggressive=False, timeout=3000): + ''' + Walk to target position + + Parameters + ---------- + target_2d : array_like + 2D target in absolute coordinates + orientation : float + absolute or relative orientation of torso, in degrees + set to None to go towards the target (is_orientation_absolute is ignored) + is_orientation_absolute : bool + True if orientation is relative to the field, False if relative to the robot's torso + avoid_obstacles : bool + True to avoid obstacles using path planning (maybe reduce timeout arg if this function is called multiple times per simulation cycle) + priority_unums : list + list of teammates to avoid (since their role is more important) + is_aggressive : bool + if True, safety margins are reduced for opponents + timeout : float + restrict path planning to a maximum duration (in microseconds) + ''' + r = self.world.robot + + if self.fat_proxy_cmd is not None: # fat proxy behavior + self.fat_proxy_move(target_2d, orientation, is_orientation_absolute) # ignore obstacles + return + + if avoid_obstacles: + target_2d, _, distance_to_final_target = self.path_manager.get_path_to_target( + target_2d, priority_unums=priority_unums, is_aggressive=is_aggressive, timeout=timeout) + else: + distance_to_final_target = np.linalg.norm(target_2d - r.loc_head_position[:2]) + + self.behavior.execute("Walk", target_2d, True, orientation, is_orientation_absolute, distance_to_final_target) # Args: target, is_target_abs, ori, is_ori_abs, distance + def dribble(self, target_2d=(0,0), orientation=None, is_orientation_absolute=True, + avoid_obstacles=True, priority_unums=[], is_aggressive=False, timeout=3000): + ''' + Walk to target position + + Parameters + ---------- + target_2d : array_like + 2D target in absolute coordinates + orientation : float + absolute or relative orientation of torso, in degrees + set to None to go towards the target (is_orientation_absolute is ignored) + is_orientation_absolute : bool + True if orientation is relative to the field, False if relative to the robot's torso + avoid_obstacles : bool + True to avoid obstacles using path planning (maybe reduce timeout arg if this function is called multiple times per simulation cycle) + priority_unums : list + list of teammates to avoid (since their role is more important) + is_aggressive : bool + if True, safety margins are reduced for opponents + timeout : float + restrict path planning to a maximum duration (in microseconds) + ''' + r = self.world.robot + + if self.fat_proxy_cmd is not None: # fat proxy behavior + self.fat_proxy_move(target_2d, orientation, is_orientation_absolute) # ignore obstacles + return + + if avoid_obstacles: + target_2d, _, distance_to_final_target = self.path_manager.get_path_to_target( + target_2d, priority_unums=priority_unums, is_aggressive=is_aggressive, timeout=timeout) + else: + distance_to_final_target = np.linalg.norm(target_2d - r.loc_head_position[:2]) + + self.behavior.execute("Dribble", orientation, True) # Args: target, is_target_abs, ori, is_ori_abs, distance + + + + + def kick(self, kick_direction=None, kick_distance=None, abort=False, enable_pass_command=False): + ''' + Walk to ball and kick + + Parameters + ---------- + kick_direction : float + kick direction, in degrees, relative to the field + kick_distance : float + kick distance in meters + abort : bool + True to abort. + The method returns True upon successful abortion, which is immediate while the robot is aligning itself. + However, if the abortion is requested during the kick, it is delayed until the kick is completed. + avoid_pass_command : bool + When False, the pass command will be used when at least one opponent is near the ball + + Returns + ------- + finished : bool + Returns True if the behavior finished or was successfully aborted. + ''' + + if self.min_opponent_ball_dist < 1.45 and enable_pass_command: + self.scom.commit_pass_command() + + self.kick_direction = self.kick_direction if kick_direction is None else kick_direction + self.kick_distance = self.kick_distance if kick_distance is None else kick_distance + + if self.fat_proxy_cmd is None: # normal behavior + return self.behavior.execute("Basic_Kick", self.kick_direction, abort) # Basic_Kick has no kick distance control + else: # fat proxy behavior + return self.fat_proxy_kick() + + + + + def think_and_send(self): + w = self.world + r = self.world.robot + my_head_pos_2d = r.loc_head_position[:2] + my_ori = r.imu_torso_orientation + ball_2d = w.ball_abs_pos[:2] + ball_vec = ball_2d - my_head_pos_2d + ball_dir = M.vector_angle(ball_vec) + ball_dist = np.linalg.norm(ball_vec) + ball_sq_dist = ball_dist * ball_dist # for faster comparisons + ball_speed = np.linalg.norm(w.get_ball_abs_vel(6)[:2]) + behavior = self.behavior + goal_dir = M.target_abs_angle(ball_2d,(15.05,0)) + path_draw_options = self.path_manager.draw_options + PM = w.play_mode + PM_GROUP = w.play_mode_group + + #--------------------------------------- 1. Preprocessing + + slow_ball_pos = w.get_predicted_ball_pos(0.5) # predicted future 2D ball position when ball speed <= 0.5 m/s + + # list of squared distances between teammates (including self) and slow ball (sq distance is set to 1000 in some conditions) + teammates_ball_sq_dist = [np.sum((p.state_abs_pos[:2] - slow_ball_pos) ** 2) # squared distance between teammate and ball + if p.state_last_update != 0 and (w.time_local_ms - p.state_last_update <= 360 or p.is_self) and not p.state_fallen + else 1000 # force large distance if teammate does not exist, or its state info is not recent (360 ms), or it has fallen + for p in w.teammates ] + + # list of squared distances between opponents and slow ball (sq distance is set to 1000 in some conditions) + opponents_ball_sq_dist = [np.sum((p.state_abs_pos[:2] - slow_ball_pos) ** 2) # squared distance between teammate and ball + if p.state_last_update != 0 and w.time_local_ms - p.state_last_update <= 360 and not p.state_fallen + else 1000 # force large distance if opponent does not exist, or its state info is not recent (360 ms), or it has fallen + for p in w.opponents ] + + min_teammate_ball_sq_dist = min(teammates_ball_sq_dist) + self.min_teammate_ball_dist = math.sqrt(min_teammate_ball_sq_dist) # distance between ball and closest teammate + self.min_opponent_ball_dist = math.sqrt(min(opponents_ball_sq_dist)) # distance between ball and closest opponent + + active_player_unum = teammates_ball_sq_dist.index(min_teammate_ball_sq_dist) + 1 + + + #--------------------------------------- 2. Decide action + + + + if PM == w.M_GAME_OVER: + pass + elif PM_GROUP == w.MG_ACTIVE_BEAM: + self.beam() + elif PM_GROUP == w.MG_PASSIVE_BEAM: + self.beam(True) # avoid center circle + elif self.state == 1 or (behavior.is_ready("Get_Up") and self.fat_proxy_cmd is None): + self.state = 0 if behavior.execute("Get_Up") else 1 # return to normal state if get up behavior has finished + elif PM == w.M_OUR_KICKOFF: + if r.unum == 9: + self.kick(120,3) # no need to change the state when PM is not Play On + else: + self.move(self.init_pos, orientation=ball_dir) # walk in place + elif PM == w.M_THEIR_KICKOFF: + self.move(self.init_pos, orientation=ball_dir) # walk in place + elif active_player_unum != r.unum: # I am not the active player + if r.unum == 1: # I am the goalkeeper + self.move(self.init_pos, orientation=ball_dir) # walk in place + else: + # compute basic formation position based on ball position + new_x = max(0.5,(ball_2d[0]+15)/15) * (self.init_pos[0]+15) - 15 + if self.min_teammate_ball_dist < self.min_opponent_ball_dist: + new_x = min(new_x + 3.5, 13) # advance if team has possession + self.move((new_x,self.init_pos[1]), orientation=ball_dir, priority_unums=[active_player_unum]) + + else: # I am the active player + path_draw_options(enable_obstacles=True, enable_path=True, use_team_drawing_channel=True) # enable path drawings for active player (ignored if self.enable_draw is False) + enable_pass_command = (PM == w.M_PLAY_ON and ball_2d[0]<6) + + if r.unum == 1 and PM_GROUP == w.MG_THEIR_KICK: # goalkeeper during their kick + self.move(self.init_pos, orientation=ball_dir) # walk in place + if PM == w.M_OUR_CORNER_KICK: + self.kick( -np.sign(ball_2d[1])*95, 5.5) # kick the ball into the space in front of the opponent's goal + # no need to change the state when PM is not Play On + elif self.min_opponent_ball_dist + 0.5 < self.min_teammate_ball_dist: # defend if opponent is considerably closer to the ball + if self.state == 2: # commit to kick while aborting + self.state = 0 if self.kick(abort=True) else 2 + else: # move towards ball, but position myself between ball and our goal + self.move(slow_ball_pos + M.normalize_vec((-16,0) - slow_ball_pos) * 0.2, is_aggressive=True) + else: + self.state = 0 if self.kick(goal_dir, 9, False, enable_pass_command) else 2 + + path_draw_options(enable_obstacles=False, enable_path=False) # disable path drawings + + #--------------------------------------- 3. Broadcast + self.radio.broadcast() + + #--------------------------------------- 4. Send to server + if self.fat_proxy_cmd is None: # normal behavior + self.scom.commit_and_send( r.get_command() ) + else: # fat proxy behavior + self.scom.commit_and_send( self.fat_proxy_cmd.encode() ) + self.fat_proxy_cmd = "" + + #---------------------- annotations for debugging + if self.enable_draw: + d = w.draw + if active_player_unum == r.unum: + d.point(slow_ball_pos, 3, d.Color.pink, "status", False) # predicted future 2D ball position when ball speed <= 0.5 m/s + d.point(w.ball_2d_pred_pos[-1], 5, d.Color.pink, "status", False) # last ball prediction + d.annotation((*my_head_pos_2d, 0.6), "I've got it!" , d.Color.yellow, "status") + else: + d.clear("status") + + + + + #--------------------------------------- Fat proxy auxiliary methods + + + def fat_proxy_kick(self): + w = self.world + r = self.world.robot + ball_2d = w.ball_abs_pos[:2] + my_head_pos_2d = r.loc_head_position[:2] + + if np.linalg.norm(ball_2d - my_head_pos_2d) < 0.25: + # fat proxy kick arguments: power [0,10]; relative horizontal angle [-180,180]; vertical angle [0,70] + self.fat_proxy_cmd += f"(proxy kick 10 {M.normalize_deg( self.kick_direction - r.imu_torso_orientation ):.2f} 20)" + self.fat_proxy_walk = np.zeros(3) # reset fat proxy walk + return True + else: + self.fat_proxy_move(ball_2d-(-0.1,0), None, True) # ignore obstacles + return False + + + def fat_proxy_move(self, target_2d, orientation, is_orientation_absolute): + r = self.world.robot + + target_dist = np.linalg.norm(target_2d - r.loc_head_position[:2]) + target_dir = M.target_rel_angle(r.loc_head_position[:2], r.imu_torso_orientation, target_2d) + + if target_dist > 0.1 and abs(target_dir) < 8: + self.fat_proxy_cmd += (f"(proxy dash {100} {0} {0})") + return + + if target_dist < 0.1: + if is_orientation_absolute: + orientation = M.normalize_deg( orientation - r.imu_torso_orientation ) + target_dir = np.clip(orientation, -60, 60) + self.fat_proxy_cmd += (f"(proxy dash {0} {0} {target_dir:.1f})") + else: + self.fat_proxy_cmd += (f"(proxy dash {20} {0} {target_dir:.1f})") \ No newline at end of file diff --git a/agent/Agent_Penalty.py b/agent/Agent_Penalty.py new file mode 100644 index 0000000..b90b3e3 --- /dev/null +++ b/agent/Agent_Penalty.py @@ -0,0 +1,88 @@ +from agent.Base_Agent import Base_Agent +from math_ops.Math_Ops import Math_Ops as M +import numpy as np +import random + + +class Agent(Base_Agent): + def __init__(self, host:str, agent_port:int, monitor_port:int, unum:int, + team_name:str, enable_log, enable_draw, wait_for_server=True, is_fat_proxy=False) -> None: + + # define robot type + robot_type = 0 if unum == 1 else 4 # assume the goalkeeper uses uniform number 1 and the kicker uses any other number + + # Initialize base agent + # Args: Server IP, Agent Port, Monitor Port, Uniform No., Robot Type, Team Name, Enable Log, Enable Draw, play mode correction, Wait for Server, Hear Callback + super().__init__(host, agent_port, monitor_port, unum, robot_type, team_name, enable_log, enable_draw, False, wait_for_server, None) + + self.enable_draw = enable_draw + self.state = 0 # 0-Normal, 1-Getting up, 2-Dive Left, 3-Dive Right, 4-Wait + + self.kick_dir = 0 # kick direction + self.reset_kick = True # when True, a new random kick direction is generated + + + def think_and_send(self): + w = self.world + r = self.world.robot + my_head_pos_2d = r.loc_head_position[:2] + my_ori = r.imu_torso_orientation + ball_2d = w.ball_abs_pos[:2] + ball_vec = ball_2d - my_head_pos_2d + ball_dir = M.vector_angle(ball_vec) + ball_dist = np.linalg.norm(ball_vec) + ball_speed = np.linalg.norm(w.get_ball_abs_vel(6)[:2]) + behavior = self.behavior + PM = w.play_mode + + #--------------------------------------- 1. Decide action + + if PM in [w.M_BEFORE_KICKOFF, w.M_THEIR_GOAL, w.M_OUR_GOAL]: # beam to initial position and wait + self.state = 0 + self.reset_kick = True + pos = (-14,0) if r.unum == 1 else (4.9,0) + if np.linalg.norm(pos - r.loc_head_position[:2]) > 0.1 or behavior.is_ready("Get_Up"): + self.scom.commit_beam(pos, 0) # beam to initial position + else: + behavior.execute("Zero_Bent_Knees") # wait + elif self.state == 2: # dive left + self.state = 4 if behavior.execute("Dive_Left") else 2 # change state to wait after skill has finished + elif self.state == 3: # dive right + self.state = 4 if behavior.execute("Dive_Right") else 3 # change state to wait after skill has finished + elif self.state == 4: # wait (after diving or during opposing kick) + pass + elif self.state == 1 or behavior.is_ready("Get_Up"): # if getting up or fallen + self.state = 0 if behavior.execute("Get_Up") else 1 # return to normal state if get up behavior has finished + elif PM == w.M_OUR_KICKOFF and r.unum == 1 or PM == w.M_THEIR_KICKOFF and r.unum != 1: + self.state = 4 # wait until next beam + elif r.unum == 1: # goalkeeper + y_coordinate = np.clip(ball_2d[1], -1.1, 1.1) + behavior.execute("Walk", (-14,y_coordinate), True, 0, True, None) # Args: target, is_target_abs, ori, is_ori_abs, distance + if ball_2d[0] < -10: + self.state = 2 if ball_2d[1] > 0 else 3 # dive to defend + else: # kicker + if PM == w.M_OUR_KICKOFF and ball_2d[0] > 5: # check ball position to make sure I see it + if self.reset_kick: + self.kick_dir = random.choice([-7.5,7.5]) + self.reset_kick = False + behavior.execute("Basic_Kick", self.kick_dir) + else: + behavior.execute("Zero_Bent_Knees") # wait + + #--------------------------------------- 2. Broadcast + self.radio.broadcast() + + #--------------------------------------- 3. Send to server + self.scom.commit_and_send( r.get_command() ) + + #---------------------- annotations for debugging + if self.enable_draw: + d = w.draw + if r.unum == 1: + d.annotation((*my_head_pos_2d, 0.8), "Goalkeeper" , d.Color.yellow, "status") + else: + d.annotation((*my_head_pos_2d, 0.8), "Kicker" , d.Color.yellow, "status") + if PM == w.M_OUR_KICKOFF: # draw arrow to indicate kick direction + d.arrow(ball_2d, ball_2d + 5*M.vector_from_angle(self.kick_dir), 0.4, 3, d.Color.cyan_light, "Target") + + diff --git a/agent/Base_Agent.py b/agent/Base_Agent.py new file mode 100644 index 0000000..650e203 --- /dev/null +++ b/agent/Base_Agent.py @@ -0,0 +1,47 @@ +from abc import abstractmethod +from behaviors.Behavior import Behavior +from communication.Radio import Radio +from communication.Server_Comm import Server_Comm +from communication.World_Parser import World_Parser +from logs.Logger import Logger +from math_ops.Inverse_Kinematics import Inverse_Kinematics +from world.commons.Path_Manager import Path_Manager +from world.World import World + +class Base_Agent(): + all_agents = [] + + def __init__(self, host:str, agent_port:int, monitor_port:int, unum:int, robot_type:int, team_name:str, enable_log:bool=True, + enable_draw:bool=True, apply_play_mode_correction:bool=True, wait_for_server:bool=True, hear_callback=None) -> None: + + self.radio = None # hear_message may be called during Server_Comm instantiation + self.logger = Logger(enable_log, f"{team_name}_{unum}") + self.world = World(robot_type, team_name, unum, apply_play_mode_correction, enable_draw, self.logger, host) + self.world_parser = World_Parser(self.world, self.hear_message if hear_callback is None else hear_callback) + self.scom = Server_Comm(host,agent_port,monitor_port,unum,robot_type,team_name,self.world_parser,self.world,Base_Agent.all_agents,wait_for_server) + self.inv_kinematics = Inverse_Kinematics(self.world.robot) + self.behavior = Behavior(self) + self.path_manager = Path_Manager(self.world) + self.radio = Radio(self.world, self.scom.commit_announcement) + self.behavior.create_behaviors() + Base_Agent.all_agents.append(self) + + @abstractmethod + def think_and_send(self): + pass + + def hear_message(self, msg:bytearray, direction, timestamp:float) -> None: + if direction != "self" and self.radio is not None: + self.radio.receive(msg) + + def terminate(self): + # close shared monitor socket if this is the last agent on this thread + self.scom.close(close_monitor_socket=(len(Base_Agent.all_agents)==1)) + Base_Agent.all_agents.remove(self) + + @staticmethod + def terminate_all(): + for o in Base_Agent.all_agents: + o.scom.close(True) # close shared monitor socket, if it exists + Base_Agent.all_agents = [] + diff --git a/agent/__pycache__/Base_Agent.cpython-313.pyc b/agent/__pycache__/Base_Agent.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d7a0bb2b4a125f868b5f811a69430f5b3ecb55e7 GIT binary patch literal 3867 zcmaJ^U2Gf25#HmUj^t546eZiV%`lc?n@%IuKPnnEa3R}~9nw|}o)rtBfWzr{md@tg zse31>Lfb$OMPUH}1Qal!AP-gg(AYqMC_sz)v5$TfE4vgHG7zAB@f#hr$ZKczcqiIb zy##k=cV_>-otd56OQjM7O6m^@;|r0He`3QgkruP}8(vU14%4OR$p()+AX|1Zt*UhKL(JIlHBM;7Qgx>7PM-Beveb5Q@L>dq-QR7>@= zqI|sOZOE$+wHkZB1LgslCRC6K4aoux4-*>6ksOix7?8SxsUeDh6;yR;*tvI8k^NE_eBz>nqZMR+i_U}4rRH@yiHvunYLxPHuYMO1#7`% z32M*SuHr7w>n!f-s;OA2sk4M`sWUZQsoAqE+2X5IU1C{ve!jM>%-7Uq#k8xsqS=({ znrqk=>snF`SGfZV0Pp}bi&5QOpq3`J&V~f}F#Pxa2v?5gHc4vO&r1a*yi6^2f+0>u zI?4I4Zycc6G7~~79f9V@Qy)#OlzlVyyMay$BP}f$8OSRL4=5$?LUqgt@@$`N1V z;5o}#U%pRA1doS#g1uGV^5v7HP2TPIRt9|T;C0%@1gEH+dh-~Vso&Swr{&Z8ywA1W zyWfTPk`EdIQ+_vK1IBl#Jb5$1<@bUi0ke-rp3IU$Xo3j}I9Zfp#Gz<3EC#Lt@q*%= zu;>zo9E$e9q&Z!sim5vexE_m#mttR-NI?5H^O#FW*$IE}O#~g5mw(H8j7>L`5+mP$>%Q zZ4>yNXuM7ejCqALW28TOKk`{(xBuAsCl7zJsXmTuE^ZYrZukEbx|6$o+4a%Q!L3_L zL#@@-+LlGP`y4*t*y)Fvud|P`Pu{B+mCaj?k@3HejBn|5`xwZdibr-cZ*4?2rN5oo zx?O49o~z%U+cM0C;nWT1sr%{oge(Zf&`Xar2`Pm>3GETmR|&!F@!i}HH#2|Dev@sS z9jl)m+s<9WIgjoh&TnMC=md?_uD|~Fu?yaMu+-Xw);NB z&F+ZOT52`b5Kq>{lTXFdyJET_9g_pws zgLhSPUc=S=g3I$QRDpRwCgH&xT_Qw<9e^MET5WXZ*#DE1ah}%-#P`;L(M$0Mp309` z2vL}cunu^dbYoF3M0hvFn84yyqxE9ZA3@u}9i#DbG$=+ycBl=4c6WXo^)X(okey^^ zJ+__9ZCv zBz@}J{E5#J&&1;#qJl^fYdVM(dOAIc75b64D}aH}JXD3~EhrO(G)8Jn7a>w76if#f zAZ1jTq$odMP-`tom!jM;sN>e)6|ihY@ysC%i9HJ&@IFOmY`aF$sVH6wJr5O&&n!bS zN~yZcqIclgaJgU7F_cLVXdrd>z6t1u*wv>fUZC}V}D z?)(L+-;$l4-j!lALVhibg?4`NtC!(a^xgH#O#du^(4&6)>Or#vv)nZ^h-{6 zawnQNcIV19k186c%@Da18V~&kWz8IkWnPAaXlgGETobuwEEFAFUv3g0j~6(3lKD5b zz7xYRBtc^7m!WWU0EeXakn>K2=a?w;vamX%ao|`wc;ScquOu&V;Az2vWoQ7KZ4L3y zCNE()f(gUEr0qM3rz$M_s=WQf%1d^VkOetI-UpVK7afJ~syW4;cZUA=W6R5NvOFak z!l@xY7;69e@-myGr@&X^`IYA%uihpTKky9hB1H#ApK{RZn_)o^o|D{ja_TvG=Q%n1 WoSf&)QO+FyJ~AK-d`F<-IQ|#=T1v|R literal 0 HcmV?d00001 diff --git a/behaviors/Behavior.py b/behaviors/Behavior.py new file mode 100644 index 0000000..0c5ba28 --- /dev/null +++ b/behaviors/Behavior.py @@ -0,0 +1,176 @@ +import numpy as np + + +class Behavior(): + + def __init__(self, base_agent) -> None: + from agent.Base_Agent import Base_Agent # for type hinting + self.base_agent: Base_Agent = base_agent + self.world = self.base_agent.world + self.state_behavior_name = None + self.state_behavior_init_ms = 0 + self.previous_behavior = None + self.previous_behavior_duration = None + + # Initialize standard behaviors + from behaviors.Poses import Poses + from behaviors.Slot_Engine import Slot_Engine + from behaviors.Head import Head + + self.poses = Poses(self.world) + self.slot_engine = Slot_Engine(self.world) + self.head = Head(self.world) + + def create_behaviors(self): + ''' + Behaviors dictionary: + creation: key: ( description, auto_head, lambda reset[,a,b,c,..]: self.execute(...), lambda: self.is_ready(...) ) + usage: key: ( description, auto_head, execute_func(reset, *args), is_ready_func ) + ''' + self.behaviors = self.poses.get_behaviors_callbacks() + self.behaviors.update(self.slot_engine.get_behaviors_callbacks()) + self.behaviors.update(self.get_custom_callbacks()) + + def get_custom_callbacks(self): + ''' + Searching custom behaviors could be implemented automatically + However, for code distribution, loading code dynamically is not ideal (unless we load byte code or some other import solution) + Currently, adding custom behaviors is a manual process: + 1. Add import statement below + 2. Add class to 'classes' list + ''' + + # Declaration of behaviors + from behaviors.custom.Basic_Kick.Basic_Kick import Basic_Kick + from behaviors.custom.Dribble.Dribble import Dribble + from behaviors.custom.Fall.Fall import Fall + from behaviors.custom.Get_Up.Get_Up import Get_Up + from behaviors.custom.Step.Step import Step + from behaviors.custom.Walk.Walk import Walk + from behaviors.custom.Nerul_Kick.Nerul_Kick import Nerul_Kick + from behaviors.custom.Kick_RL.Kick_RL import Kick_RL + + classes = [Basic_Kick, Dribble, Fall, Get_Up, Step, Walk, Nerul_Kick, Kick_RL] + + '''---- End of manual declarations ----''' + + # Prepare callbacks + self.objects = {cls.__name__: cls(self.base_agent) for cls in classes} + + return {name: (o.description, o.auto_head, + lambda reset, *args, o=o: o.execute(reset, *args), lambda *args, o=o: o.is_ready(*args)) for + name, o in self.objects.items()} + + def get_custom_behavior_object(self, name): + ''' Get unique object from class "name" ("name" must represent a custom behavior) ''' + assert name in self.objects, f"There is no custom behavior called {name}" + return self.objects[name] + + def get_all_behaviors(self): + ''' Get name and description of all behaviors ''' + return [key for key in self.behaviors], [val[0] for val in self.behaviors.values()] + + def get_current(self): + ''' Get name and duration (in seconds) of current behavior ''' + duration = (self.world.time_local_ms - self.state_behavior_init_ms) / 1000.0 + return self.state_behavior_name, duration + + def get_previous(self): + ''' Get name and duration (in seconds) of previous behavior ''' + return self.previous_behavior, self.previous_behavior_duration + + def force_reset(self): + ''' Force reset next executed behavior ''' + self.state_behavior_name = None + + def execute(self, name, *args) -> bool: + ''' + Execute one step of behavior `name` with arguments `*args` + - Automatically resets behavior on first call + - Call get_current() to get the current behavior (and its duration) + + Returns + ------- + finished : bool + True if behavior has finished + ''' + + assert name in self.behaviors, f"Behavior {name} does not exist!" + + # Check if transitioning from other behavior + reset = bool(self.state_behavior_name != name) + if reset: + if self.state_behavior_name is not None: + self.previous_behavior = self.state_behavior_name # Previous behavior was interrupted (did not finish) + self.previous_behavior_duration = (self.world.time_local_ms - self.state_behavior_init_ms) / 1000.0 + self.state_behavior_name = name + self.state_behavior_init_ms = self.world.time_local_ms + + # Control head orientation if behavior allows it + if self.behaviors[name][1]: + self.head.execute() + + # Execute behavior + if not self.behaviors[name][2](reset, *args): + return False + + # The behavior has finished + self.previous_behavior = self.state_behavior_name # Store current behavior name + self.state_behavior_name = None + return True + + def execute_sub_behavior(self, name, reset, *args): + ''' + Execute one step of behavior `name` with arguments `*args` + Useful for custom behaviors that call other behaviors + - Behavior reset is performed manually + - Calling get_current() will return the main behavior (not the sub behavior) + - Poses ignore the reset argument + + Returns + ------- + finished : bool + True if behavior has finished + ''' + + assert name in self.behaviors, f"Behavior {name} does not exist!" + + # Control head orientation if behavior allows it + if self.behaviors[name][1]: + self.head.execute() + + # Execute behavior + return self.behaviors[name][2](reset, *args) + + def execute_to_completion(self, name, *args): + ''' + Execute steps and communicate with server until completion + - Slot behaviors indicate that the behavior has finished when sending the last command (which is promptly sent) + - Poses are finished when the server returns the desired robot state (so the last command is irrelevant) + - For custom behaviors, we assume the same logic, and so, the last command is ignored + + Notes + ----- + - Before exiting, the `Robot.joints_target_speed` array is reset to avoid polluting the next command + - For poses and custom behaviors that indicate a finished behavior on the 1st call, nothing is committed or sent + - Warning: this function may get stuck in an infinite loop if the behavior never ends + ''' + + r = self.world.robot + skip_last = name not in self.slot_engine.behaviors + + while True: + done = self.execute(name, *args) + if done and skip_last: break # Exit here if last command is irrelevant + self.base_agent.scom.commit_and_send(r.get_command()) + self.base_agent.scom.receive() + if done: break # Exit here if last command is part of the behavior + + # reset to avoid polluting the next command + r.joints_target_speed = np.zeros_like(r.joints_target_speed) + + def is_ready(self, name, *args) -> bool: + ''' Checks if behavior is ready to start under current game/robot conditions ''' + + assert name in self.behaviors, f"Behavior {name} does not exist!" + return self.behaviors[name][3](*args) diff --git a/behaviors/Head.py b/behaviors/Head.py new file mode 100644 index 0000000..9c3383c --- /dev/null +++ b/behaviors/Head.py @@ -0,0 +1,105 @@ +from math_ops.Math_Ops import Math_Ops as M +from world.World import World +import numpy as np + +class Head(): + FIELD_FLAGS = World.FLAGS_CORNERS_POS + World.FLAGS_POSTS_POS + HEAD_PITCH = -35 + + def __init__(self, world : World) -> None: + self.world = world + self.look_left = True + self.state = 0 + + + def execute(self): + ''' + Try to compute best head orientation if possible, otherwise look around + + state: + 0 - Adjust position - ball is in FOV and robot can self-locate + 1..TIMEOUT-1 - Guided search - attempt to use recent visual/radio information to guide the search + TIMEOUT - Random search - look around (default mode after guided search fails by timeout) + ''' + TIMEOUT = 30 + w = self.world + r = w.robot + can_self_locate = r.loc_last_update > w.time_local_ms - w.VISUALSTEP_MS + + #--------------------------------------- A. Ball is in FOV and robot can self-locate + + if w.ball_last_seen > w.time_local_ms - w.VISUALSTEP_MS: # ball is in FOV + if can_self_locate: + best_dir = self.compute_best_direction(can_self_locate, use_ball_from_vision=True) + self.state = 0 + elif self.state < TIMEOUT: + #--------------------------------------- B. Ball is in FOV but robot cannot currently self-locate + best_dir = self.compute_best_direction(can_self_locate, use_ball_from_vision=True) + self.state += 1 # change to guided search and increment time + elif self.state < TIMEOUT: + #--------------------------------------- C. Ball is not in FOV + best_dir = self.compute_best_direction(can_self_locate) + self.state += 1 # change to guided search and increment time + + + if self.state == TIMEOUT: # Random search + + if w.ball_last_seen > w.time_local_ms - w.VISUALSTEP_MS: # Ball is in FOV (search 45 deg to both sides of the ball) + ball_dir = M.vector_angle(w.ball_rel_torso_cart_pos[:2]) + targ = np.clip(ball_dir + (45 if self.look_left else -45), -119, 119) + else: # Ball is not in FOV (search 119 deg to both sides) + targ = 119 if self.look_left else -119 + + if r.set_joints_target_position_direct([0,1], np.array([targ,Head.HEAD_PITCH]), False) <= 0: + self.look_left = not self.look_left + + else: # Adjust position or guided search + r.set_joints_target_position_direct([0,1], np.array([best_dir,Head.HEAD_PITCH]), False) + + + def compute_best_direction(self, can_self_locate, use_ball_from_vision=False): + FOV_MARGIN = 15 # safety margin, avoid margin horizontally + SAFE_RANGE = 120 - FOV_MARGIN*2 + HALF_RANGE = SAFE_RANGE / 2 + + w = self.world + r = w.robot + + if use_ball_from_vision: + ball_2d_dist = np.linalg.norm(w.ball_rel_torso_cart_pos[:2]) + else: + ball_2d_dist = np.linalg.norm(w.ball_abs_pos[:2]-r.loc_head_position[:2]) + + if ball_2d_dist > 0.12: + if use_ball_from_vision: + ball_dir = M.vector_angle(w.ball_rel_torso_cart_pos[:2]) + else: + ball_dir = M.target_rel_angle(r.loc_head_position, r.imu_torso_orientation, w.ball_abs_pos) + else: # ball is very close to robot + ball_dir = 0 + + flags_diff = dict() + + # iterate flags + for f in Head.FIELD_FLAGS: + flag_dir = M.target_rel_angle(r.loc_head_position, r.imu_torso_orientation, f) + diff = M.normalize_deg( flag_dir - ball_dir ) + if abs(diff) < HALF_RANGE and can_self_locate: + return ball_dir # return ball direction if robot can self-locate + flags_diff[f] = diff + + + closest_flag = min( flags_diff, key=lambda k: abs(flags_diff[k]) ) + closest_diff = flags_diff[closest_flag] + + if can_self_locate: # at this point, if it can self-locate, then abs(closest_diff) > HALF_RANGE + # return position that centers the ball as much as possible in the FOV, including the nearest flag if possible + final_diff = min( abs(closest_diff) - HALF_RANGE, SAFE_RANGE ) * np.sign(closest_diff) + else: + # position that centers the flag as much as possible, until it is seen, while keeping the ball in the FOV + final_diff = np.clip( closest_diff, -SAFE_RANGE, SAFE_RANGE ) + # saturate instead of normalizing angle to avoid a complete neck rotation + return np.clip(ball_dir + final_diff, -119, 119) + + + return M.normalize_deg( ball_dir + final_diff ) \ No newline at end of file diff --git a/behaviors/Poses.py b/behaviors/Poses.py new file mode 100644 index 0000000..80458e2 --- /dev/null +++ b/behaviors/Poses.py @@ -0,0 +1,97 @@ +''' +Pose - angles in degrees for the specified joints +Note: toes positions are ignored by robots that have no toes + +Poses may control all joints or just a subgroup defined by the "indices" variable +''' + +import numpy as np +from world.World import World + + +class Poses(): + def __init__(self, world : World) -> None: + self.world = world + self.tolerance = 0.05 # angle error tolerance to consider that behavior is finished + + ''' + Instruction to add new pose: + 1. add new entry to the following dictionary, using a unique behavior name + 2. that's it + ''' + self.poses = { + "Zero":( + "Neutral pose, including head", # description + False, # disable automatic head orientation + np.array([0,1,2,3,4,5,6,7,8,9,10,11,12,13, 14, 15,16,17,18,19,20,21,22,23]), # indices + np.array([0,0,0,0,0,0,0,0,0,0, 0, 0, 0, 0,-90,-90, 0, 0,90,90, 0, 0, 0, 0]) # values + ), + "Zero_Legacy":( + "Neutral pose, including head, elbows cause collision (legacy)", # description + False, # disable automatic head orientation + np.array([0,1,2,3,4,5,6,7,8,9,10,11,12,13, 14, 15,16,17,18,19,20,21,22,23]), # indices + np.array([0,0,0,0,0,0,0,0,0,0, 0, 0, 0, 0,-90,-90, 0, 0, 0, 0, 0, 0, 0, 0]) # values + ), + "Zero_Bent_Knees":( + "Neutral pose, including head, bent knees", # description + False, # disable automatic head orientation + np.array([0,1,2,3,4,5,6, 7, 8, 9,10,11,12,13, 14, 15,16,17,18,19,20,21,22,23]), # indices + np.array([0,0,0,0,0,0,30,30,-60,-60,30,30, 0, 0,-90,-90, 0, 0,90,90, 0, 0, 0, 0]) # values + ), + "Zero_Bent_Knees_Auto_Head":( + "Neutral pose, automatic head, bent knees", # description + True, # enable automatic head orientation + np.array([2,3,4,5,6, 7, 8, 9,10,11,12,13, 14, 15,16,17,18,19,20,21,22,23]), # indices + np.array([0,0,0,0,30,30,-60,-60,30,30, 0, 0,-90,-90, 0, 0,90,90, 0, 0, 0, 0]) # values + ), + "Fall_Back":( + "Incline feet to fall back", # description + True, # enable automatic head orientation + np.array([ 10, 11]), # indices + np.array([-20,-20]) # values + ), + "Fall_Front":( + "Incline feet to fall forward", # description + True, # enable automatic head orientation + np.array([10,11]), # indices + np.array([45,45]) # values + ), + "Fall_Left":( + "Incline legs to fall to left", # description + True, # enable automatic head orientation + np.array([ 4, 5]), # indices + np.array([-20,20]) # values + ), + "Fall_Right":( + "Incline legs to fall to right", # description + True, # enable automatic head orientation + np.array([ 4, 5]), # indices + np.array([20,-20]) # values + ), + } + + # Remove toes if not robot 4 + if world.robot.type != 4: + for key, val in self.poses.items(): + idxs = np.where(val[2] >= 22)[0] # search for joint 22 & 23 + if len(idxs) > 0: + self.poses[key] = (val[0], val[1], np.delete(val[2],idxs), np.delete(val[3],idxs)) # remove those joints + + + def get_behaviors_callbacks(self): + ''' + Returns callbacks for each pose behavior (used internally) + + Implementation note: + -------------------- + Using dummy default parameters because lambda expression will remember the scope and var name. + In the loop, the scope does not change, nor does the var name. + However, default parameters are evaluated when the lambda is defined. + ''' + return {key: (val[0], val[1], lambda reset, key=key: self.execute(key), lambda: True) for key, val in self.poses.items()} + + def execute(self,name) -> bool: + _, _, indices, values = self.poses[name] + remaining_steps = self.world.robot.set_joints_target_position_direct(indices,values,True,tolerance=self.tolerance) + return bool(remaining_steps == -1) + diff --git a/behaviors/Slot_Engine.py b/behaviors/Slot_Engine.py new file mode 100644 index 0000000..7566228 --- /dev/null +++ b/behaviors/Slot_Engine.py @@ -0,0 +1,110 @@ +from math_ops.Math_Ops import Math_Ops as M +from os import listdir +from os.path import isfile, join +from world.World import World +import numpy as np +import xml.etree.ElementTree as xmlp + +class Slot_Engine(): + + def __init__(self, world : World) -> None: + self.world = world + self.state_slot_number = 0 + self.state_slot_start_time = 0 + self.state_slot_start_angles = None + self.state_init_zero = True + + # ------------- Parse slot behaviors + + dir = M.get_active_directory("/behaviors/slot/") + + common_dir = f"{dir}common/" + files = [(f,join(common_dir, f)) for f in listdir(common_dir) if isfile(join(common_dir, f)) and f.endswith(".xml")] + robot_dir = f"{dir}r{world.robot.type}" + files += [(f,join(robot_dir, f)) for f in listdir(robot_dir) if isfile(join(robot_dir, f)) and f.endswith(".xml")] + + self.behaviors = dict() + self.descriptions = dict() + self.auto_head_flags = dict() + + for fname, file in files: + robot_xml_root = xmlp.parse(file).getroot() + slots = [] + bname = fname[:-4] # remove extension ".xml" + + for xml_slot in robot_xml_root: + assert xml_slot.tag == 'slot', f"Unexpected XML element in slot behavior {fname}: '{xml_slot.tag}'" + indices, angles = [],[] + + for action in xml_slot: + indices.append( int(action.attrib['id']) ) + angles.append( float(action.attrib['angle']) ) + + delta_ms = float(xml_slot.attrib['delta']) * 1000 + assert delta_ms > 0, f"Invalid delta <=0 found in Slot Behavior {fname}" + slots.append((delta_ms, indices, angles)) + + assert bname not in self.behaviors, f"Found at least 2 slot behaviors with same name: {fname}" + + self.descriptions[bname] = robot_xml_root.attrib["description"] if "description" in robot_xml_root.attrib else bname + self.auto_head_flags[bname] = (robot_xml_root.attrib["auto_head"] == "1") + self.behaviors[bname] = slots + + + def get_behaviors_callbacks(self): + ''' + Returns callbacks for each slot behavior (used internally) + + Implementation note: + -------------------- + Using dummy default parameters because lambda expression will remember the scope and var name. + In the loop, the scope does not change, nor does the var name. + However, default parameters are evaluated when the lambda is defined. + ''' + return {key: (self.descriptions[key],self.auto_head_flags[key], + lambda reset,key=key: self.execute(key,reset), lambda key=key: self.is_ready(key)) for key in self.behaviors} + + + def is_ready(self,name) -> bool: + return True + + + def reset(self, name): + ''' Initialize/Reset slot behavior ''' + + self.state_slot_number = 0 + self.state_slot_start_time_ms = self.world.time_local_ms + self.state_slot_start_angles = np.copy(self.world.robot.joints_position) + assert name in self.behaviors, f"Requested slot behavior does not exist: {name}" + + + def execute(self,name,reset) -> bool: + ''' Execute one step ''' + + if reset: self.reset(name) + + elapsed_ms = self.world.time_local_ms - self.state_slot_start_time_ms + delta_ms, indices, angles = self.behaviors[name][self.state_slot_number] + + # Check slot progression + if elapsed_ms >= delta_ms: + self.state_slot_start_angles[indices] = angles #update start angles based on last target + + # Prevent 2 rare scenarios: + # 1 - this function is called after the behavior is finished & reset==False + # 2 - we are in the last slot, syncmode is not active, and we lost the last step + if self.state_slot_number+1 == len(self.behaviors[name]): + return True # So, the return indicates a finished behavior until a reset is sent via the arguments + + self.state_slot_number += 1 + elapsed_ms = 0 + self.state_slot_start_time_ms = self.world.time_local_ms + delta_ms, indices, angles = self.behaviors[name][self.state_slot_number] + + # Execute + progress = (elapsed_ms+20) / delta_ms + target = (angles - self.state_slot_start_angles[indices]) * progress + self.state_slot_start_angles[indices] + self.world.robot.set_joints_target_position_direct(indices,target,False) + + # Return True if finished (this is the last step) + return bool(elapsed_ms+20 >= delta_ms and self.state_slot_number + 1 == len(self.behaviors[name])) # true if next step (now+20ms) is out of bounds diff --git a/behaviors/__pycache__/Behavior.cpython-313.pyc b/behaviors/__pycache__/Behavior.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..44b6559e77f1f1f341074bb846cad75ccf4b9b39 GIT binary patch literal 9683 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 JT15-*{{Uh+?}q>Y literal 0 HcmV?d00001 diff --git a/behaviors/__pycache__/Head.cpython-313.pyc b/behaviors/__pycache__/Head.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1e2c31e75577f483a39666e9094f98d479cece32 GIT binary patch literal 5423 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 Ol%k&e6p^Pc%zps76mDYx literal 0 HcmV?d00001 diff --git a/behaviors/__pycache__/Poses.cpython-313.pyc b/behaviors/__pycache__/Poses.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ab3ee2b3240cea99020d963f38ad134abe79fc78 GIT binary patch literal 5361 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 literal 0 HcmV?d00001 diff --git a/behaviors/custom/Basic_Kick/Basic_Kick.py b/behaviors/custom/Basic_Kick/Basic_Kick.py new file mode 100644 index 0000000..298ffa5 --- /dev/null +++ b/behaviors/custom/Basic_Kick/Basic_Kick.py @@ -0,0 +1,73 @@ +from agent.Base_Agent import Base_Agent +from behaviors.custom.Step.Step_Generator import Step_Generator +from math_ops.Math_Ops import Math_Ops as M + + +class Basic_Kick(): + + def __init__(self, base_agent : Base_Agent) -> None: + self.behavior = base_agent.behavior + self.path_manager = base_agent.path_manager + self.world = base_agent.world + self.description = "Walk to ball and perform a basic kick" + self.auto_head = True + + r_type = self.world.robot.type + self.bias_dir = [22,29,26,29,22][self.world.robot.type] + self.ball_x_limits = ((0.19,0.215), (0.2,0.22), (0.19,0.22), (0.2,0.215), (0.2,0.215))[r_type] + self.ball_y_limits = ((-0.115,-0.1), (-0.125,-0.095), (-0.12,-0.1), (-0.13,-0.105), (-0.09,-0.06))[r_type] + self.ball_x_center = (self.ball_x_limits[0] + self.ball_x_limits[1])/2 + self.ball_y_center = (self.ball_y_limits[0] + self.ball_y_limits[1])/2 + + def execute(self,reset, direction, abort=False) -> bool: # You can add more arguments + ''' + Parameters + ---------- + direction : float + kick direction relative to field, in degrees + abort : bool + True to abort. + The method returns True upon successful abortion, which is immediate while the robot is aligning itself. + However, if the abortion is requested during the kick, it is delayed until the kick is completed. + ''' + + w = self.world + r = self.world.robot + b = w.ball_rel_torso_cart_pos + t = w.time_local_ms + gait : Step_Generator = self.behavior.get_custom_behavior_object("Walk").env.step_generator + + if reset: + self.phase = 0 + self.reset_time = t + + if self.phase == 0: + biased_dir = M.normalize_deg(direction + self.bias_dir) # add bias to rectify direction + ang_diff = abs(M.normalize_deg( biased_dir - r.loc_torso_orientation )) # the reset was learned with loc, not IMU + + next_pos, next_ori, dist_to_final_target = self.path_manager.get_path_to_ball( + x_ori=biased_dir, x_dev=-self.ball_x_center, y_dev=-self.ball_y_center, torso_ori=biased_dir) + + if (w.ball_last_seen > t - w.VISUALSTEP_MS and ang_diff < 5 and # ball is visible & aligned + self.ball_x_limits[0] < b[0] < self.ball_x_limits[1] and # ball is in kick area (x) + self.ball_y_limits[0] < b[1] < self.ball_y_limits[1] and # ball is in kick area (y) + t - w.ball_abs_pos_last_update < 100 and # ball absolute location is recent + dist_to_final_target < 0.03 and # if absolute ball position is updated + not gait.state_is_left_active and gait.state_current_ts == 2 and # walk gait phase is adequate + t - self.reset_time > 500): # to avoid kicking immediately without preparation & stability + + self.phase += 1 + return self.behavior.execute_sub_behavior("Kick_Motion", True) + else: + dist = max(0.07, dist_to_final_target) + reset_walk = reset and self.behavior.previous_behavior != "Walk" # reset walk if it wasn't the previous behavior + self.behavior.execute_sub_behavior("Walk", reset_walk, next_pos, True, next_ori, True, dist) # target, is_target_abs, ori, is_ori_abs, distance + return abort # abort only if self.phase == 0 + + else: # define kick parameters and execute + return self.behavior.execute_sub_behavior("Kick_Motion", False) + + + def is_ready(self) -> any: # You can add more arguments + ''' Returns True if this behavior is ready to start/continue under current game/robot conditions ''' + return True diff --git a/behaviors/custom/Basic_Kick/Env.py b/behaviors/custom/Basic_Kick/Env.py new file mode 100644 index 0000000..274764b --- /dev/null +++ b/behaviors/custom/Basic_Kick/Env.py @@ -0,0 +1,201 @@ +from agent.Base_Agent import Base_Agent +from behaviors.custom.Step.Step_Generator import Step_Generator +from math_ops.Math_Ops import Math_Ops as M +import math +import numpy as np + + +class Env(): + def __init__(self, base_agent : Base_Agent) -> None: + + self.world = base_agent.world + self.ik = base_agent.inv_kinematics + + # State space + self.obs = np.zeros(63, np.float32) + + # Step behavior defaults + self.STEP_DUR = 8 + self.STEP_Z_SPAN = 0.02 + self.STEP_Z_MAX = 0.70 + + # IK + nao_specs = self.ik.NAO_SPECS + self.leg_length = nao_specs[1] + nao_specs[3] # upper leg height + lower leg height + feet_y_dev = nao_specs[0] * 1.12 # wider step + sample_time = self.world.robot.STEPTIME + max_ankle_z = nao_specs[5] + + self.step_generator = Step_Generator(feet_y_dev, sample_time, max_ankle_z) + self.DEFAULT_ARMS = np.array([-90,-90,8,8,90,90,70,70],np.float32) + + self.walk_rel_orientation = None + self.walk_rel_target = None + self.walk_distance = None + + + def observe(self, init=False): + + r = self.world.robot + + if init: # reset variables + self.act = np.zeros(16, np.float32) # memory variable + self.step_counter = 0 + + # index observation naive normalization + self.obs[0] = min(self.step_counter,15*8) /100 # simple counter: 0,1,2,3... + self.obs[1] = r.loc_head_z *3 # z coordinate (torso) + self.obs[2] = r.loc_head_z_vel /2 # z velocity (torso) + self.obs[3] = r.imu_torso_roll /15 # absolute torso roll in deg + self.obs[4] = r.imu_torso_pitch /15 # absolute torso pitch in deg + self.obs[5:8] = r.gyro /100 # gyroscope + self.obs[8:11] = r.acc /10 # accelerometer + + self.obs[11:17] = r.frp.get('lf', np.zeros(6)) * (10,10,10,0.01,0.01,0.01) # left foot: relative point of origin (p) and force vector (f) -> (px,py,pz,fx,fy,fz)* + self.obs[17:23] = r.frp.get('rf', np.zeros(6)) * (10,10,10,0.01,0.01,0.01) # right foot: relative point of origin (p) and force vector (f) -> (px,py,pz,fx,fy,fz)* + # *if foot is not touching the ground, then (px=0,py=0,pz=0,fx=0,fy=0,fz=0) + + # Joints: Forward kinematics for ankles + feet rotation + arms (pitch + roll) + rel_lankle = self.ik.get_body_part_pos_relative_to_hip("lankle") # ankle position relative to center of both hip joints + rel_rankle = self.ik.get_body_part_pos_relative_to_hip("rankle") # ankle position relative to center of both hip joints + lf = r.head_to_body_part_transform("torso", r.body_parts['lfoot'].transform ) # foot transform relative to torso + rf = r.head_to_body_part_transform("torso", r.body_parts['rfoot'].transform ) # foot transform relative to torso + lf_rot_rel_torso = np.array( [lf.get_roll_deg(), lf.get_pitch_deg(), lf.get_yaw_deg()] ) # foot rotation relative to torso + rf_rot_rel_torso = np.array( [rf.get_roll_deg(), rf.get_pitch_deg(), rf.get_yaw_deg()] ) # foot rotation relative to torso + + # pose + self.obs[23:26] = rel_lankle * (8,8,5) + self.obs[26:29] = rel_rankle * (8,8,5) + self.obs[29:32] = lf_rot_rel_torso / 20 + self.obs[32:35] = rf_rot_rel_torso / 20 + self.obs[35:39] = r.joints_position[14:18] /100 # arms (pitch + roll) + + # velocity + self.obs[39:55] = r.joints_target_last_speed[2:18] # predictions == last action + + ''' + Expected observations for walking state: + Time step R 0 1 2 3 4 5 6 7 0 + Progress 1 0 .14 .28 .43 .57 .71 .86 1 0 + Left leg active T F F F F F F F F T + ''' + + if init: # the walking parameters refer to the last parameters in effect (after a reset, they are pointless) + self.obs[55] = 1 # step progress + self.obs[56] = 1 # 1 if left leg is active + self.obs[57] = 0 # 1 if right leg is active + else: + self.obs[55] = self.step_generator.external_progress # step progress + self.obs[56] = float(self.step_generator.state_is_left_active) # 1 if left leg is active + self.obs[57] = float(not self.step_generator.state_is_left_active) # 1 if right leg is active + + ''' + Create internal target with a smoother variation + ''' + + MAX_LINEAR_DIST = 0.5 + MAX_LINEAR_DIFF = 0.014 # max difference (meters) per step + MAX_ROTATION_DIFF = 1.6 # max difference (degrees) per step + MAX_ROTATION_DIST = 45 + + + if init: + self.internal_rel_orientation = 0 + self.internal_target = np.zeros(2) + + previous_internal_target = np.copy(self.internal_target) + + #---------------------------------------------------------------- compute internal linear target + + rel_raw_target_size = np.linalg.norm(self.walk_rel_target) + + if rel_raw_target_size == 0: + rel_target = self.walk_rel_target + else: + rel_target = self.walk_rel_target / rel_raw_target_size * min(self.walk_distance, MAX_LINEAR_DIST) + + internal_diff = rel_target - self.internal_target + internal_diff_size = np.linalg.norm(internal_diff) + + if internal_diff_size > MAX_LINEAR_DIFF: + self.internal_target += internal_diff * (MAX_LINEAR_DIFF / internal_diff_size) + else: + self.internal_target[:] = rel_target + + #---------------------------------------------------------------- compute internal rotation target + + internal_ori_diff = np.clip( M.normalize_deg( self.walk_rel_orientation - self.internal_rel_orientation ), -MAX_ROTATION_DIFF, MAX_ROTATION_DIFF) + self.internal_rel_orientation = np.clip(M.normalize_deg( self.internal_rel_orientation + internal_ori_diff ), -MAX_ROTATION_DIST, MAX_ROTATION_DIST) + + #----------------------------------------------------------------- observations + + internal_target_vel = self.internal_target - previous_internal_target + + self.obs[58] = self.internal_target[0] / MAX_LINEAR_DIST + self.obs[59] = self.internal_target[1] / MAX_LINEAR_DIST + self.obs[60] = self.internal_rel_orientation / MAX_ROTATION_DIST + self.obs[61] = internal_target_vel[0] / MAX_LINEAR_DIFF + self.obs[62] = internal_target_vel[0] / MAX_LINEAR_DIFF + + return self.obs + + + def execute_ik(self, l_pos, l_rot, r_pos, r_rot): + r = self.world.robot + # Apply IK to each leg + Set joint targets + + # Left leg + indices, self.values_l, error_codes = self.ik.leg(l_pos, l_rot, True, dynamic_pose=False) + + r.set_joints_target_position_direct(indices, self.values_l, harmonize=False) + + # Right leg + indices, self.values_r, error_codes = self.ik.leg(r_pos, r_rot, False, dynamic_pose=False) + + r.set_joints_target_position_direct(indices, self.values_r, harmonize=False) + + + def execute(self, action): + + r = self.world.robot + + # Actions: + # 0,1,2 left ankle pos + # 3,4,5 right ankle pos + # 6,7,8 left foot rotation + # 9,10,11 right foot rotation + # 12,13 left/right arm pitch + # 14,15 left/right arm roll + + internal_dist = np.linalg.norm( self.internal_target ) + action_mult = 1 if internal_dist > 0.2 else (0.7/0.2) * internal_dist + 0.3 + + # exponential moving average + self.act = 0.8 * self.act + 0.2 * action * action_mult * 0.7 + + # execute Step behavior to extract the target positions of each leg (we will override these targets) + lfy,lfz,rfy,rfz = self.step_generator.get_target_positions(self.step_counter == 0, self.STEP_DUR, self.STEP_Z_SPAN, self.leg_length * self.STEP_Z_MAX) + + + # Leg IK + a = self.act + l_ankle_pos = (a[0]*0.02, max(0.01, a[1]*0.02 + lfy), a[2]*0.01 + lfz) # limit y to avoid self collision + r_ankle_pos = (a[3]*0.02, min(a[4]*0.02 + rfy, -0.01), a[5]*0.01 + rfz) # limit y to avoid self collision + l_foot_rot = a[6:9] * (3,3,5) + r_foot_rot = a[9:12] * (3,3,5) + + # Limit leg yaw/pitch + l_foot_rot[2] = max(0,l_foot_rot[2] + 7) + r_foot_rot[2] = min(0,r_foot_rot[2] - 7) + + # Arms actions + arms = np.copy(self.DEFAULT_ARMS) # default arms pose + arm_swing = math.sin(self.step_generator.state_current_ts / self.STEP_DUR * math.pi) * 6 + inv = 1 if self.step_generator.state_is_left_active else -1 + arms[0:4] += a[12:16]*4 + (-arm_swing*inv,arm_swing*inv,0,0) # arms pitch+roll + + # Set target positions + self.execute_ik(l_ankle_pos, l_foot_rot, r_ankle_pos, r_foot_rot) # legs + r.set_joints_target_position_direct( slice(14,22), arms, harmonize=False ) # arms + + self.step_counter += 1 \ No newline at end of file diff --git a/behaviors/custom/Basic_Kick/__pycache__/Basic_Kick.cpython-313.pyc b/behaviors/custom/Basic_Kick/__pycache__/Basic_Kick.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..20fb3a8ec349daa7bb539cd8500e623e9e4355c6 GIT binary patch literal 5009 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 None: + self.behavior = base_agent.behavior + self.path_manager = base_agent.path_manager + self.world = base_agent.world + self.description = "RL dribble" + self.auto_head = True + self.env = Env(base_agent, 0.9 if self.world.robot.type == 3 else 1.2) + + with open(M.get_active_directory([ + "/behaviors/custom/Dribble/dribble_R0.pkl", + "/behaviors/custom/Dribble/dribble_R1.pkl", + "/behaviors/custom/Dribble/dribble_R2.pkl", + "/behaviors/custom/Dribble/dribble_R3.pkl", + "/behaviors/custom/Dribble/dribble_R4.pkl" + ][self.world.robot.type]), 'rb') as f: + self.model = pickle.load(f) + + def define_approach_orientation(self): + + w = self.world + b = w.ball_abs_pos[:2] + me = w.robot.loc_head_position[:2] + + self.approach_orientation = None + + MARGIN = 0.8 # safety margin (if ball is near the field limits by this amount, the approach orientation is considered) + M90 = 90 / MARGIN # auxiliary variable + DEV = 25 # when standing on top of sidelines or endlines, the approach direction deviates from that line by this amount + MDEV = (90 + DEV) / MARGIN # auxiliary variable + + a1 = -180 # angle range start (counterclockwise rotation) + a2 = 180 # angle range end (counterclockwise rotation) + + if b[1] < -10 + MARGIN: + if b[0] < -15 + MARGIN: + a1 = DEV - M90 * (b[1] + 10) + a2 = 90 - DEV + M90 * (b[0] + 15) + elif b[0] > 15 - MARGIN: + a1 = 90 + DEV - M90 * (15 - b[0]) + a2 = 180 - DEV + M90 * (b[1] + 10) + else: + a1 = DEV - MDEV * (b[1] + 10) + a2 = 180 - DEV + MDEV * (b[1] + 10) + elif b[1] > 10 - MARGIN: + if b[0] < -15 + MARGIN: + a1 = -90 + DEV - M90 * (b[0] + 15) + a2 = -DEV + M90 * (10 - b[1]) + elif b[0] > 15 - MARGIN: + a1 = 180 + DEV - M90 * (10 - b[1]) + a2 = 270 - DEV + M90 * (15 - b[0]) + else: + a1 = -180 + DEV - MDEV * (10 - b[1]) + a2 = -DEV + MDEV * (10 - b[1]) + elif b[0] < -15 + MARGIN: + a1 = -90 + DEV - MDEV * (b[0] + 15) + a2 = 90 - DEV + MDEV * (b[0] + 15) + elif b[0] > 15 - MARGIN and abs(b[1]) > 1.2: + a1 = 90 + DEV - MDEV * (15 - b[0]) + a2 = 270 - DEV + MDEV * (15 - b[0]) + + cad = M.vector_angle(b - me) # current approach direction + + a1 = M.normalize_deg(a1) + a2 = M.normalize_deg(a2) + + if a1 < a2: + if a1 <= cad <= a2: + return # current approach orientation is within accepted range + else: + if a1 <= cad or cad <= a2: + return # current approach orientation is within accepted range + + a1_diff = abs(M.normalize_deg(a1 - cad)) + a2_diff = abs(M.normalize_deg(a2 - cad)) + + self.approach_orientation = a1 if a1_diff < a2_diff else a2 # fixed normalized orientation + + def execute(self, reset, orientation, is_orientation_absolute, speed=1, stop=False): + ''' + Parameters + ---------- + orientation : float + absolute or relative orientation of torso (relative to imu_torso_orientation), in degrees + set to None to dribble towards the opponent's goal (is_orientation_absolute is ignored) + is_orientation_absolute : bool + True if orientation is relative to the field, False if relative to the robot's torso + speed : float + speed from 0 to 1 (scale is not linear) + stop : bool + return True immediately if walking, wind down if dribbling, and return True when possible + ''' + w = self.world + r = self.world.robot + me = r.loc_head_position[:2] + b = w.ball_abs_pos[:2] + b_rel = w.ball_rel_torso_cart_pos[:2] + b_dist = np.linalg.norm(b - me) + behavior = self.behavior + reset_dribble = False + lost_ball = (w.ball_last_seen <= w.time_local_ms - w.VISUALSTEP_MS) or np.linalg.norm(b_rel) > 0.4 + + if reset: + self.phase = 0 + if behavior.previous_behavior == "Push_RL" and 0 < b_rel[0] < 0.25 and abs(b_rel[1]) < 0.07: + self.phase = 1 + reset_dribble = True + + if self.phase == 0: # walk to ball + reset_walk = reset and behavior.previous_behavior != "Walk" and behavior.previous_behavior != "Push_RL" # reset walk if it wasn't the previous behavior + + # ------------------------ 1. Decide if a better approach orientation is needed (when ball is nearly out of bounds) + if reset or b_dist > 0.4: # stop defining orientation after getting near the ball to avoid noise + self.define_approach_orientation() + + # ------------------------ 2A. A better approach orientation is needed (ball is almost out of bounds) + if self.approach_orientation is not None: + next_pos, next_ori, dist_to_final_target = self.path_manager.get_path_to_ball( + x_ori=self.approach_orientation, x_dev=-0.24, torso_ori=self.approach_orientation, + safety_margin=0.4) + + if b_rel[0] < 0.26 and b_rel[0] > 0.18 and abs( + b_rel[1]) < 0.04 and w.ball_is_visible: # ready to start dribble + self.phase += 1 + reset_dribble = True + else: + dist = max(0.08, dist_to_final_target * 0.7) + behavior.execute_sub_behavior("Walk", reset_walk, next_pos, True, next_ori, True, + dist) # target, is_target_abs, ori, is_ori_abs, distance + + # ------------------------ 2B. A better approach orientation is not needed but the robot cannot see the ball + elif w.time_local_ms - w.ball_last_seen > 200: # walk to absolute target if ball was not seen + abs_ori = M.vector_angle(b - me) + behavior.execute_sub_behavior("Walk", reset_walk, b, True, abs_ori, True, + None) # target, is_target_abs, ori, is_ori_abs, distance + + # ------------------------ 2C. A better approach orientation is not needed and the robot can see the ball + else: # walk to relative target + if 0.18 < b_rel[0] < 0.25 and abs(b_rel[1]) < 0.05 and w.ball_is_visible: # ready to start dribble + self.phase += 1 + reset_dribble = True + else: + rel_target = b_rel + (-0.23, 0) # relative target is a circle (center: ball, radius:0.23m) + rel_ori = M.vector_angle(b_rel) # relative orientation of ball, NOT the target! + dist = max(0.08, np.linalg.norm(rel_target) * 0.7) # slow approach + behavior.execute_sub_behavior("Walk", reset_walk, rel_target, False, rel_ori, False, + dist) # target, is_target_abs, ori, is_ori_abs, distance + + if stop: + return True + + if self.phase == 1 and (stop or (b_dist > 0.5 and lost_ball)): # go back to walking + self.phase += 1 + elif self.phase == 1: # dribble + # ------------------------ 1. Define dribble parameters + self.env.dribble_speed = speed + + # Relative orientation values are decreased to avoid overshoot + if orientation is None: + if b[0] < 0: # dribble to the sides + if b[1] > 0: + dribble_target = (15, 5) + else: + dribble_target = (15, -5) + else: + dribble_target = None # go to goal + self.env.dribble_rel_orientation = \ + self.path_manager.get_dribble_path(optional_2d_target=dribble_target)[1] + elif is_orientation_absolute: + self.env.dribble_rel_orientation = M.normalize_deg(orientation - r.imu_torso_orientation) + else: + self.env.dribble_rel_orientation = float(orientation) # copy if numpy float + + # ------------------------ 2. Execute behavior + obs = self.env.observe(reset_dribble) + action = run_mlp(obs, self.model) + self.env.execute(action) + + # wind down dribbling, and then reset phase + if self.phase > 1: + WIND_DOWN_STEPS = 60 + # ------------------------ 1. Define dribble wind down parameters + self.env.dribble_speed = 1 - self.phase / WIND_DOWN_STEPS + self.env.dribble_rel_orientation = 0 + + # ------------------------ 2. Execute behavior + obs = self.env.observe(reset_dribble, virtual_ball=True) + action = run_mlp(obs, self.model) + self.env.execute(action) + + # ------------------------ 3. Reset behavior + self.phase += 1 + if self.phase >= WIND_DOWN_STEPS - 5: + self.phase = 0 + return True + + return False + + def is_ready(self): + ''' Returns True if this behavior is ready to start/continue under current game/robot conditions ''' + return True diff --git a/behaviors/custom/Dribble/Env.py b/behaviors/custom/Dribble/Env.py new file mode 100644 index 0000000..c09f94e --- /dev/null +++ b/behaviors/custom/Dribble/Env.py @@ -0,0 +1,184 @@ +from agent.Base_Agent import Base_Agent +from behaviors.custom.Step.Step_Generator import Step_Generator +from math_ops.Math_Ops import Math_Ops as M +import math +import numpy as np + + +class Env: + def __init__(self, base_agent: Base_Agent, step_width) -> None: + + self.gym_last_internal_abs_ori = None + self.world = base_agent.world + self.ik = base_agent.inv_kinematics + + # State space + self.obs = np.zeros(76, np.float32) + + # Step behavior defaults + self.STEP_DUR = 8 + self.STEP_Z_SPAN = 0.02 + self.STEP_Z_MAX = 0.70 + + # IK + r = self.world.robot + nao_specs = self.ik.NAO_SPECS + self.leg_length = nao_specs[1] + nao_specs[3] # upper leg height + lower leg height + feet_y_dev = nao_specs[0] * step_width # wider step + sample_time = r.STEPTIME + max_ankle_z = nao_specs[5] + + self.step_generator = Step_Generator(feet_y_dev, sample_time, max_ankle_z) + self.DEFAULT_ARMS = np.array([-90, -90, 8, 8, 90, 90, 70, 70], np.float32) + + self.dribble_rel_orientation = None # relative to imu_torso_orientation (in degrees) + self.dribble_speed = 1 + + def observe(self, init=False, virtual_ball=False): + + w = self.world + r = self.world.robot + + if init: # reset variables + self.step_counter = 0 + self.act = np.zeros(16, np.float32) # memory variable + + # index observation naive normalization + self.obs[0] = min(self.step_counter, 12 * 8) / 100 # simple counter: 0,1,2,3... + self.obs[1] = r.loc_head_z * 3 # z coordinate (torso) + self.obs[2] = r.loc_head_z_vel / 2 # z velocity (torso) + self.obs[3] = r.imu_torso_roll / 15 # absolute torso roll in deg + self.obs[4] = r.imu_torso_pitch / 15 # absolute torso pitch in deg + self.obs[5:8] = r.gyro / 100 # gyroscope + self.obs[8:11] = r.acc / 10 # accelerometer + + self.obs[11:17] = r.frp.get('lf', np.zeros(6)) * (10, 10, 10, 0.01, 0.01, + 0.01) # left foot: relative point of origin (p) and force vector (f) -> (px,py,pz,fx,fy,fz)* + self.obs[17:23] = r.frp.get('rf', np.zeros(6)) * (10, 10, 10, 0.01, 0.01, + 0.01) # right foot: relative point of origin (p) and force vector (f) -> (px,py,pz,fx,fy,fz)* + # *if foot is not touching the ground, then (px=0,py=0,pz=0,fx=0,fy=0,fz=0) + + self.obs[23:43] = r.joints_position[2:22] / 100 # position of all joints except head & toes (for robot type 4) + self.obs[43:63] = r.joints_speed[2:22] / 6.1395 # speed of all joints except head & toes (for robot type 4) + + ''' + Expected observations for walking state: + Time step R 0 1 2 3 4 5 6 7 0 + Progress 1 0 .14 .28 .43 .57 .71 .86 1 0 + Left leg active T F F F F F F F F T + ''' + + if init: # the walking parameters refer to the last parameters in effect (after a reset, they are pointless) + self.obs[63] = 1 # step progress + self.obs[64] = 1 # 1 if left leg is active + self.obs[65] = 0 # 1 if right leg is active + self.obs[66] = 0 + else: + self.obs[63] = self.step_generator.external_progress # step progress + self.obs[64] = float(self.step_generator.state_is_left_active) # 1 if left leg is active + self.obs[65] = float(not self.step_generator.state_is_left_active) # 1 if right leg is active + self.obs[66] = math.sin(self.step_generator.state_current_ts / self.step_generator.ts_per_step * math.pi) + + # Ball + ball_rel_hip_center = self.ik.torso_to_hip_transform(w.ball_rel_torso_cart_pos) + ball_dist_hip_center = np.linalg.norm(ball_rel_hip_center) + + if init: + self.obs[67:70] = (0, 0, 0) # Initial velocity is 0 + elif w.ball_is_visible: + self.obs[67:70] = (ball_rel_hip_center - self.obs[70:73]) * 10 # Ball velocity, relative to ankle's midpoint + + self.obs[70:73] = ball_rel_hip_center # Ball position, relative to hip + self.obs[73] = ball_dist_hip_center * 2 + + if virtual_ball: # simulate the ball between the robot's feet + self.obs[67:74] = (0, 0, 0, 0.05, 0, -0.175, 0.36) + + ''' + Create internal target with a smoother variation + ''' + + MAX_ROTATION_DIFF = 20 # max difference (degrees) per visual step + MAX_ROTATION_DIST = 80 + + if init: + self.internal_rel_orientation = 0 + self.internal_target_vel = 0 + self.gym_last_internal_abs_ori = r.imu_torso_orientation # for training purposes (reward) + + # ---------------------------------------------------------------- compute internal target + + if w.vision_is_up_to_date: + previous_internal_rel_orientation = np.copy(self.internal_rel_orientation) + + internal_ori_diff = np.clip(M.normalize_deg(self.dribble_rel_orientation - self.internal_rel_orientation), + -MAX_ROTATION_DIFF, MAX_ROTATION_DIFF) + self.internal_rel_orientation = np.clip(M.normalize_deg(self.internal_rel_orientation + internal_ori_diff), + -MAX_ROTATION_DIST, MAX_ROTATION_DIST) + + # Observations + self.internal_target_vel = self.internal_rel_orientation - previous_internal_rel_orientation + + self.gym_last_internal_abs_ori = self.internal_rel_orientation + r.imu_torso_orientation + + # ----------------------------------------------------------------- observations + + self.obs[74] = self.internal_rel_orientation / MAX_ROTATION_DIST + self.obs[75] = self.internal_target_vel / MAX_ROTATION_DIFF + + return self.obs + + def execute_ik(self, l_pos, l_rot, r_pos, r_rot): + r = self.world.robot + # Apply IK to each leg + Set joint targets + + # Left leg + indices, self.values_l, error_codes = self.ik.leg(l_pos, l_rot, True, dynamic_pose=False) + + r.set_joints_target_position_direct(indices, self.values_l, harmonize=False) + + # Right leg + indices, self.values_r, error_codes = self.ik.leg(r_pos, r_rot, False, dynamic_pose=False) + + r.set_joints_target_position_direct(indices, self.values_r, harmonize=False) + + def execute(self, action): + + r = self.world.robot + + # Actions: + # 0,1,2 left ankle pos + # 3,4,5 right ankle pos + # 6,7,8 left foot rotation + # 9,10,11 right foot rotation + # 12,13 left/right arm pitch + # 14,15 left/right arm roll + + # exponential moving average + self.act = 0.85 * self.act + 0.15 * action * 0.7 * 0.95 * self.dribble_speed + + # execute Step behavior to extract the target positions of each leg (we will override these targets) + lfy, lfz, rfy, rfz = self.step_generator.get_target_positions(self.step_counter == 0, self.STEP_DUR, + self.STEP_Z_SPAN, + self.leg_length * self.STEP_Z_MAX) + + # Leg IK + a = self.act + l_ankle_pos = (a[0] * 0.025 - 0.01, a[1] * 0.01 + lfy, a[2] * 0.01 + lfz) + r_ankle_pos = (a[3] * 0.025 - 0.01, a[4] * 0.01 + rfy, a[5] * 0.01 + rfz) + l_foot_rot = a[6:9] * (2, 2, 3) + r_foot_rot = a[9:12] * (2, 2, 3) + + # Limit leg yaw/pitch (and add bias) + l_foot_rot[2] = max(0, l_foot_rot[2] + 18.3) + r_foot_rot[2] = min(0, r_foot_rot[2] - 18.3) + + # Arms actions + arms = np.copy(self.DEFAULT_ARMS) # default arms pose + arms[0:4] += a[12:16] * 4 # arms pitch+roll + + # Set target positions + self.execute_ik(l_ankle_pos, l_foot_rot, r_ankle_pos, r_foot_rot) # legs + r.set_joints_target_position_direct(slice(14, 22), arms, harmonize=False) # arms + + self.step_counter += 1 diff --git a/behaviors/custom/Dribble/__pycache__/Dribble.cpython-313.pyc b/behaviors/custom/Dribble/__pycache__/Dribble.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1c5e6ee17f5c6c0621443e3893302a287ae048bd GIT binary patch literal 9979 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 literal 0 HcmV?d00001 diff --git a/behaviors/custom/Dribble/dribble_R0.pkl b/behaviors/custom/Dribble/dribble_R0.pkl new file mode 100644 index 0000000000000000000000000000000000000000..7d0e0502c4e0d761dca4c566258e9043879a0efa GIT binary patch literal 24148 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 literal 0 HcmV?d00001 diff --git a/behaviors/custom/Dribble/dribble_R2.pkl b/behaviors/custom/Dribble/dribble_R2.pkl new file mode 100644 index 0000000000000000000000000000000000000000..9d9d61f444e95ed5bf3e18d57f12b4ad5cc48645 GIT binary patch literal 24148 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 Szbk?mC0{?^)k&*YkNF>V#md$I literal 0 HcmV?d00001 diff --git a/behaviors/custom/Dribble/dribble_R4.pkl b/behaviors/custom/Dribble/dribble_R4.pkl new file mode 100644 index 0000000000000000000000000000000000000000..781d55ac9722c226ff719f5700b4e48633d4d87e GIT binary patch literal 24148 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 SCig$H2oFyW=LBbGqyGoMX5za5 literal 0 HcmV?d00001 diff --git a/behaviors/custom/Fall/Fall.py b/behaviors/custom/Fall/Fall.py new file mode 100644 index 0000000..398e719 --- /dev/null +++ b/behaviors/custom/Fall/Fall.py @@ -0,0 +1,43 @@ +from agent.Base_Agent import Base_Agent +from math_ops.Math_Ops import Math_Ops as M +from math_ops.Neural_Network import run_mlp +import pickle, numpy as np + +class Fall(): + + def __init__(self, base_agent : Base_Agent) -> None: + self.world = base_agent.world + self.description = "Fall example" + self.auto_head = False + + with open(M.get_active_directory("/behaviors/custom/Fall/fall.pkl"), 'rb') as f: + self.model = pickle.load(f) + + self.action_size = len(self.model[-1][0]) # extracted from size of Neural Network's last layer bias + self.obs = np.zeros(self.action_size+1, np.float32) + + self.controllable_joints = min(self.world.robot.no_of_joints, self.action_size) # compatibility between different robot types + + def observe(self): + r = self.world.robot + + for i in range(self.action_size): + self.obs[i] = r.joints_position[i] / 100 # naive scale normalization + + self.obs[self.action_size] = r.cheat_abs_pos[2] # head.z (alternative: r.loc_head_z) + + def execute(self,reset) -> bool: + self.observe() + action = run_mlp(self.obs, self.model) + + self.world.robot.set_joints_target_position_direct( # commit actions: + slice(self.controllable_joints), # act on trained joints + action*10, # scale actions up to motivate early exploration + harmonize=False # there is no point in harmonizing actions if the targets change at every step + ) + + return self.world.robot.loc_head_z < 0.15 # finished when head height < 0.15 m + + def is_ready(self) -> any: + ''' Returns True if this behavior is ready to start/continue under current game/robot conditions ''' + return True diff --git a/behaviors/custom/Fall/__pycache__/Fall.cpython-313.pyc b/behaviors/custom/Fall/__pycache__/Fall.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..638de66ca926019064b0f23a0519dfa3071c8f20 GIT binary patch literal 3160 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 v;29W!jyBEg=#YI( None: + self.behavior = base_agent.behavior + self.world = base_agent.world + self.description = "Get Up using the most appropriate skills" + self.auto_head = False + self.MIN_HEIGHT = 0.3 # minimum value for the head's height + self.MAX_INCLIN = 50 # maximum torso inclination in degrees + self.STABILITY_THRESHOLD = 4 + + def reset(self): + self.state = 0 + self.gyro_queue = deque(maxlen=self.STABILITY_THRESHOLD) + self.watchdog = 0 # when player has the shaking bug, it is never stable enough to get up + + def execute(self,reset): + + r = self.world.robot + execute_sub_behavior = self.behavior.execute_sub_behavior + + if reset: + self.reset() + + if self.state == 0: # State 0: go to pose "Zero" + + self.watchdog += 1 + self.gyro_queue.append( max(abs(r.gyro)) ) # log last STABILITY_THRESHOLD values + + # advance to next state if behavior is complete & robot is stable + if (execute_sub_behavior("Zero",None) and len(self.gyro_queue) == self.STABILITY_THRESHOLD + and all(g < 10 for g in self.gyro_queue)) or self.watchdog > 100: + + # determine how to get up + if r.acc[0] < -4 and abs(r.acc[1]) < 2 and abs(r.acc[2]) < 3: + execute_sub_behavior("Get_Up_Front", True) # reset behavior + self.state = 1 + elif r.acc[0] > 4 and abs(r.acc[1]) < 2 and abs(r.acc[2]) < 3: + execute_sub_behavior("Get_Up_Back", True) # reset behavior + self.state = 2 + elif r.acc[2] > 8: # fail-safe if vision is not up to date: if pose is 'Zero' and torso is upright, the robot is already up + return True + else: + execute_sub_behavior("Flip", True) # reset behavior + self.state = 3 + + elif self.state == 1: + if execute_sub_behavior("Get_Up_Front", False): + return True + elif self.state == 2: + if execute_sub_behavior("Get_Up_Back", False): + return True + elif self.state == 3: + if execute_sub_behavior("Flip", False): + self.reset() + + return False + + + def is_ready(self): + ''' Returns True if the Get Up behavior is ready (= robot is down) ''' + r = self.world.robot + # check if z < 5 and acc magnitude > 8 and any visual indicator says we fell + return r.acc[2] < 5 and np.dot(r.acc,r.acc) > 64 and (r.loc_head_z < self.MIN_HEIGHT or r.imu_torso_inclination > self.MAX_INCLIN) diff --git a/behaviors/custom/Get_Up/__pycache__/Get_Up.cpython-313.pyc b/behaviors/custom/Get_Up/__pycache__/Get_Up.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1546fe2cb7df743bd310bbf8a1141d8edf8509d2 GIT binary patch literal 4216 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 oxn=LBAz*ntLCRM0UtyFilmGw# literal 0 HcmV?d00001 diff --git a/behaviors/custom/Kick_RL/Env.py b/behaviors/custom/Kick_RL/Env.py new file mode 100644 index 0000000..3eb7628 --- /dev/null +++ b/behaviors/custom/Kick_RL/Env.py @@ -0,0 +1,89 @@ +import numpy as np +from math_ops.Math_Ops import Math_Ops as M +from world.World import World +from agent.Base_Agent import Base_Agent + + +class Env(): + + def __init__(self, base_agent: Base_Agent, world=None) -> None: + self.world = world + self.obs = np.zeros(63, np.float32) + self.step_counter = 0 + self.kick_dir = None + self.ik = base_agent.inv_kinematics + self.base_agent = base_agent + self.DEFAULT_ARMS = np.array([ + -90, + -90, + 10, + 10, + 90, + 90, + 80, + 80], np.float32) + + def observe(self, init=(False,)): + w = self.world + r = self.world.robot + if init: + self.step_counter = 0 + self.act = np.zeros(16, np.float32) + self.obs[0] = self.step_counter / 100 + self.obs[1] = r.loc_head_z * 3 + self.obs[2] = r.loc_head_z_vel / 2 + self.obs[3] = r.imu_torso_roll / 15 + self.obs[4] = r.imu_torso_pitch / 15 + self.obs[5:8] = r.gyro / 100 + self.obs[8:11] = r.acc / 10 + self.obs[11:17] = r.frp.get('lf', np.zeros(6)) * (10, 10, 10, 0.01, 0.01, 0.01) + self.obs[17:23] = r.frp.get('rf', np.zeros(6)) * (10, 10, 10, 0.01, 0.01, 0.01) + self.obs[23:39] = r.joints_position[2:18] / 100 + self.obs[39:55] = r.joints_speed[2:18] / 6.1395 + ball_rel_hip_center = self.base_agent.inv_kinematics.torso_to_hip_transform(w.ball_rel_torso_cart_pos) + if init: + self.obs[55:58] = (0, 0, 0) + elif w.ball_is_visible: + self.obs[55:58] = (ball_rel_hip_center - self.obs[58:61]) * 10 + self.obs[58:61] = ball_rel_hip_center + self.obs[61] = np.linalg.norm(ball_rel_hip_center) * 2 + self.obs[62] = M.normalize_deg(self.kick_dir - r.imu_torso_orientation) / 30 + return self.obs + + def execute(self, action, max_speed=(7.03,)): + w = self.world + r = self.world.robot + self.act = 0.7 * self.act + 0.3 * action + a = self.act + leg_actions = a[:12] * [ + 5, + 5, + 2, + 2, + 5, + 5, + 5, + 5, + 5, + 5, + 1, + 1] + [ + -7, + -7, + 1, + 1, + 30, + 30, + -60, + -60, + 30, + 30, + 0, + 0] + arms = np.copy(self.DEFAULT_ARMS) + arms[0:4] += a[12:16] * 4 + r.set_joints_target_position_direct(slice(2, 14), leg_actions, False) + r.set_joints_target_position_direct([0, 1], np.array([0, -44], float), False) + r.set_joints_target_position_direct(slice(14, 22), arms, False) + self.step_counter += 1 + return self.step_counter > 3 diff --git a/behaviors/custom/Kick_RL/Kick_RL.py b/behaviors/custom/Kick_RL/Kick_RL.py new file mode 100644 index 0000000..7dedb08 --- /dev/null +++ b/behaviors/custom/Kick_RL/Kick_RL.py @@ -0,0 +1,111 @@ +import pickle +from math_ops.Math_Ops import Math_Ops as M +import numpy as np +from behaviors.custom.Kick_RL.Env import Env +from math_ops.Neural_Network import run_mlp +import math +from agent.Base_Agent import Base_Agent + + +class Kick_RL: + + def __init__(self, base_agent: Base_Agent) -> None: + self.base_agent = base_agent + self.world = base_agent.world + self.description = 'Walk to ball and kick in a given direction' + self.auto_head = True + self.env = Env(self.base_agent,self.world ) + self.ik = base_agent.inv_kinematics + self.behavior = base_agent.behavior + + if self.world.robot.type == 1: + model_file = "/behaviors/custom/Kick_RL/kick_all.pkl" + self.kick_time = (8, 8) + self.kick_target_bias = (14, 7) + self.kick_cap_spd = 4 + self.kick_dist = 7 + self.kick_init_pos = 0.3 + with open(M.get_active_directory(model_file), 'rb') as f: + self.model = pickle.load(f) + else: + model_file = "/behaviors/custom/Kick_RL/kick_r2.pkl" + self.kick_time = (11, 9) + self.kick_target_bias = (7, 0) + self.kick_cap_spd = 7.03 + self.kick_dist = 11 + self.kick_init_pos = 0.26 if self.world.robot.type == 0 else 0.26 + with open(M.get_active_directory(model_file), 'rb') as f: + self.model = pickle.load(f) + + # WARNING: Decompyle incomplete + + def get_kick_pos_rot(self, direction, ball_2d, cap_power): + ''' Returns kick position and desired robot orientation (with correction bias) ''' + direction += self.kick_target_bias[int(cap_power)] + dir_rad = direction * math.pi / 180 + target_unit_vec = np.array([ + math.cos(dir_rad), + math.sin(dir_rad)]) + left_unit_vec = np.array([ + -target_unit_vec[1], + target_unit_vec[0]]) + return (ball_2d - self.kick_init_pos * target_unit_vec) + 0.045 * left_unit_vec, direction + + def execute(self, reset, direction, cap_power=(False,)): + r = self.world.robot + b = self.world.ball_abs_pos[:2] + me = r.loc_torso_position[:2] + if reset: + self.phase = 0 + kick_dir = direction + self.kick_target_bias[int(cap_power)] if self.phase == 0 else self.env.kick_dir + dir_rad = kick_dir * math.pi / 180 + target_unit_vec = np.array([ + math.cos(dir_rad), + math.sin(dir_rad)]) + left_unit_vec = np.array([ + -target_unit_vec[1], + target_unit_vec[0]]) + ball_rel_hip_center = self.ik.torso_to_hip_transform(self.world.ball_rel_torso_cart_pos) + ball_dist = np.linalg.norm(ball_rel_hip_center) + rot_with_bias = kick_dir + 8 + if self.phase == 0: + target = (b - self.kick_init_pos * target_unit_vec) + 0.045 * left_unit_vec + if np.linalg.norm(target - me) < 0.1: + self.phase = 1 + self.env.kick_dir = kick_dir + if reset: + pass + reset_walk = self.behavior.previous_behavior != 'Walk' + self.behavior.execute_sub_behavior('Walk', reset_walk, target, True, rot_with_bias, True, None) + elif self.phase == 1: + target = (b - 0.1 * target_unit_vec) + 0.045 * left_unit_vec + if ball_dist < 0.27: + self.phase = 2 + else: + self.behavior.execute_sub_behavior('Walk', False, target, True, rot_with_bias, True, None) + if self.phase == 2: + walk_rl = self.behavior.get_custom_behavior_object('Walk').env + if walk_rl.step_generator.state_is_left_active and walk_rl.step_generator.state_current_ts == 1: + self.phase = 3 + else: + self.behavior.execute_sub_behavior('Walk', False, (0, 0), True, 0, True, None) + if self.phase == 3: + obs = self.env.observe(True) + action = run_mlp(obs, self.model) + self.env.execute(action) + self.phase = 4 + return False + if self.phase > 3: + obs = self.env.observe(False) + action = run_mlp(obs, self.model) + self.env.execute(action) + self.phase += 1 + print(self.phase) + if self.phase >= self.kick_time[int(cap_power)]: + print("True") + return True + return False + + def is_ready(self): + ''' Returns True if Walk Behavior is ready to start under current game/robot conditions ''' + return True diff --git a/behaviors/custom/Kick_RL/__pycache__/Env.cpython-313.pyc b/behaviors/custom/Kick_RL/__pycache__/Env.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8d0e48a6404030d3ca501948fa8598567c435f44 GIT binary patch literal 5215 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 XF+HC#9iK7#zjDS{cHbigAr=1*_7Tx} literal 0 HcmV?d00001 diff --git a/behaviors/custom/Kick_RL/__pycache__/Kick_RL.cpython-313.pyc b/behaviors/custom/Kick_RL/__pycache__/Kick_RL.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..38a9a55b3abe9247349ec5a6ae58eec98004e611 GIT binary patch literal 7190 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 JM=;kJ{V%Opq3Hks literal 0 HcmV?d00001 diff --git a/behaviors/custom/Kick_RL/kick_all.pkl b/behaviors/custom/Kick_RL/kick_all.pkl new file mode 100644 index 0000000000000000000000000000000000000000..e2af023ae04efad1f171aeea0212a6b232fa7348 GIT binary patch literal 37534 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�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
FL->F#3}3|R>S!q4h0&(L%AEM;#&Y( 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 DSS*x{ literal 0 HcmV?d00001 diff --git a/behaviors/custom/Long_Kick/Env.py b/behaviors/custom/Long_Kick/Env.py new file mode 100644 index 0000000..7be3360 --- /dev/null +++ b/behaviors/custom/Long_Kick/Env.py @@ -0,0 +1,110 @@ +# Source Generated with Decompyle++ +# File: Env.pyc (Python 3.6) +from agent.Base_Agent import Base_Agent + +import numpy as np +from math_ops.Math_Ops import Math_Ops as U +from world.World import World + + +class Env: + + def __init__(self,base_agent: Base_Agent, world=None): + self.base_agent = base_agent + self.world = base_agent.world + self.obs = np.zeros(64, np.float32) + self.DEFAULT_ARMS = np.array([ + -90, + -90, + 8, + 8, + 90, + 90, + 70, + 70], np.float32) + self.kick_ori = None + self.kick_dist = None + + def observe(self, init=(False,)): + w = self.world + r = self.world.robot + if init: + self.step_counter = 0 + self.act = np.zeros(16, np.float32) + self.obs[0] = self.step_counter / 20 + self.obs[1] = r.loc_head_z * 3 + self.obs[2] = r.loc_head_z_vel / 2 + self.obs[3] = r.imu_torso_roll / 15 + self.obs[4] = r.imu_torso_pitch / 15 + self.obs[5:8] = r.gyro / 100 + self.obs[8:11] = r.acc / 10 + self.obs[11:17] = r.frp.get('lf', np.zeros(6)) * (10, 10, 10, 0.01, 0.01, 0.01) + self.obs[17:23] = r.frp.get('rf', np.zeros(6)) * (10, 10, 10, 0.01, 0.01, 0.01) + self.obs[23:39] = r.joints_position[2:18] / 100 + self.obs[39:55] = r.joints_speed[2:18] / 6.1395 + ball_rel_hip_center = self.base_agent.inv_kinematics.torso_to_hip_transform(w.ball_rel_torso_cart_pos) + if init: + self.obs[55:58] = (0, 0, 0) + elif w.ball_is_visible: + self.obs[55:58] = (ball_rel_hip_center - self.obs[58:61]) * 10 + self.obs[58:61] = ball_rel_hip_center + self.obs[61] = np.linalg.norm(ball_rel_hip_center) * 2 + self.obs[62] = U.normalize_deg(self.kick_ori - r.imu_torso_orientation) / 30 + return self.obs + + def execute(self, action): + w = self.world + r = self.world.robot + if self.step_counter < 6: + r.joints_target_speed[2:18] = action * [ + 2, + 2, + 1, + 1, + 0.2, + 0.2, + 0.2, + 0.2, + 2, + 2, + 1, + 1, + 1, + 1, + 1, + 1] + r.joints_target_speed[12] += 1 + r.joints_target_speed[6] += 3 + r.joints_target_speed[5] -= 1 + r.joints_target_speed[8] += 3 + r.joints_target_speed[9] -= 5 + else: + r.joints_target_speed[2:18] = action * [ + 6, + 6, + 3, + 3, + 6, + 6, + 6, + 6, + 6, + 6, + 2, + 2, + 1, + 1, + 1, + 1] + r.joints_target_speed[6] -= 3 + r.joints_target_speed[7] += 3 + r.joints_target_speed[9] += 3 + r.joints_target_speed[11] -= 1 + r.set_joints_target_position_direct([ + 0, + 1], np.array([ + 0, + -44], float), False) + self.step_counter += 1 + return self.step_counter >= 18 + diff --git a/behaviors/custom/Long_Kick/Long_Kick.py b/behaviors/custom/Long_Kick/Long_Kick.py new file mode 100644 index 0000000..2471a60 --- /dev/null +++ b/behaviors/custom/Long_Kick/Long_Kick.py @@ -0,0 +1,101 @@ +from agent.Base_Agent import Base_Agent +from behaviors.custom.Nerul_Kick.Env import Env +from math_ops.Math_Ops import Math_Ops as M +from math_ops.Neural_Network import run_mlp +import numpy as np +import pickle +from behaviors.custom.Step.Step_Generator import Step_Generator + + +class Long_Kick(): + + def __init__(self, base_agent: Base_Agent) -> None: + self.phase = None + self.reset_time = None + self.behavior = base_agent.behavior + self.path_manager = base_agent.path_manager + self.world = base_agent.world + self.description = "RL dribble" + self.auto_head = True + self.env = Env(base_agent) + self.kick_flag = 0 + r_type = self.world.robot.type + self.bias_dir = [0.09, 0.1, 0.14, 0.08, 0.05][self.world.robot.type] + self.ball_x_limits = ((0.19,0.215), (0.22, 0.245), (0.20, 0.22),(0.2,0.215), (0.20, 0.22))[r_type] + self.ball_y_limits = ((-0.115,-0.1), (-0.045,-0.025), (-0.11, -0.07), (-0.06,-0.03), (-0.055, -0.035))[r_type] + self.ball_x_center = 0.21 + self.ball_y_center = -0.045 + with open(M.get_active_directory([ + "/behaviors/custom/Long_Kick/T4_best_model.zip.pkl", + "/behaviors/custom/Long_Kick/T4_best_model.zip.pkl", + "/behaviors/custom/Long_Kick/T4_best_model.zip.pkl", + "/behaviors/custom/Long_Kick/T4_best_model.zip.pkl", + "/behaviors/custom/Long_Kick/T4_best_model.zip.pkl" + ][self.world.robot.type]), 'rb') as f: + self.model = pickle.load(f) + + def execute(self, reset, direction, abort=False): + ''' + Parameters + ---------- + orientation : float + absolute or relative orientation of torso (relative to imu_torso_orientation), in degrees + set to None to dribble towards the opponent's goal (is_orientation_absolute is ignored) + is_orientation_absolute : bool + True if orientation is relative to the field, False if relative to the robot's torso + speed : float + speed from 0 to 1 (scale is not linear) + stop : bool + return True immediately if walking, wind down if dribbling, and return True when possible + ''' + + w = self.world + r = self.world.robot + b = w.ball_rel_torso_cart_pos + t = w.time_local_ms + gait: Step_Generator = self.behavior.get_custom_behavior_object("Walk").env.step_generator + + if reset: + self.kick_flag = 0 + self.phase = 0 + self.reset_time = t + + + if self.phase == 0: + biased_dir = M.normalize_deg(direction + self.bias_dir) # add bias to rectify direction + ang_diff = abs( + M.normalize_deg(biased_dir - r.loc_torso_orientation)) # the reset was learned with loc, not IMU + + next_pos, next_ori, dist_to_final_target = self.path_manager.get_path_to_ball( + x_ori=biased_dir, x_dev=-self.ball_x_center, y_dev=-self.ball_y_center, torso_ori=biased_dir) + + if (w.ball_last_seen > t - w.VISUALSTEP_MS and ang_diff < 5 and + t - w.ball_abs_pos_last_update < 100 and # ball absolute location is recent + dist_to_final_target < 0.025 and # if absolute ball position is updated + not gait.state_is_left_active and gait.state_current_ts == 2 and # walk gait phase is adequate + t - self.reset_time > 500): # to avoid kicking immediately without preparation & stability + self.phase = 1 + self.env.kick_ori = direction + obs = self.env.observe(True) + action = run_mlp(obs, self.model) + self.env.execute(action) + else: + dist = max(0.07, dist_to_final_target) + reset_walk = reset and self.behavior.previous_behavior != "Walk" # reset walk if it wasn't the previous behavior + self.behavior.execute_sub_behavior("Walk", reset_walk, next_pos, True, next_ori, True, + dist) # target, is_target_abs, ori, is_ori_abs, distance + self.phase = 0 + return abort # abort only if self.phase == 0 + else: + if (self.phase > 20): + return abort + print("kick") + self.env.kick_ori = direction + obs = self.env.observe(False) + action = run_mlp(obs, self.model) + self.env.execute(action) + self.phase += 1 + + def is_ready(self): + ''' Returns True if this behavior is ready to start/continue under current game/robot conditions ''' + return True diff --git a/behaviors/custom/Long_Kick/T4_best_model.zip.pkl b/behaviors/custom/Long_Kick/T4_best_model.zip.pkl new file mode 100644 index 0000000000000000000000000000000000000000..8132adfd7b7e47a3e670cb87afec9c3d304a77bc GIT binary patch literal 37534 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 14 + diff --git a/behaviors/custom/Nerul_Kick/Nerul_Kick.py b/behaviors/custom/Nerul_Kick/Nerul_Kick.py new file mode 100644 index 0000000..bab4afe --- /dev/null +++ b/behaviors/custom/Nerul_Kick/Nerul_Kick.py @@ -0,0 +1,106 @@ +from agent.Base_Agent import Base_Agent +from behaviors.custom.Nerul_Kick.Env import Env +from math_ops.Math_Ops import Math_Ops as M +from math_ops.Neural_Network import run_mlp +import numpy as np +import pickle +from behaviors.custom.Step.Step_Generator import Step_Generator + + +class Nerul_Kick(): + + def __init__(self, base_agent: Base_Agent) -> None: + self.phase = None + self.reset_time = None + self.behavior = base_agent.behavior + self.path_manager = base_agent.path_manager + self.world = base_agent.world + self.description = "RL dribble" + self.auto_head = True + self.env = Env(base_agent) + self.kick_flag = 0 + r_type = self.world.robot.type + self.bias_dir = [0.09, 0.1, 0.14, 0.08, 0.05][self.world.robot.type] + self.ball_x_limits = ((0.19,0.215), (0.22, 0.245), (0.20, 0.22),(0.2,0.215), (0.20, 0.22))[r_type] + self.ball_y_limits = ((-0.115,-0.1), (-0.045,-0.025), (-0.11, -0.07), (-0.06,-0.03), (-0.055, -0.035))[r_type] + self.ball_x_center = 0.21 + self.ball_y_center = -0.045 + with open(M.get_active_directory([ + "/behaviors/custom/Nerul_Kick/short_kick_R0_31_14.3M.pkl", + "/behaviors/custom/Nerul_Kick/model_14336000_steps.zip.pkl", + "/behaviors/custom/Nerul_Kick/short_kick_R2_01_14976000.pkl", + "/behaviors/custom/Nerul_Kick/short_kick_R3_14976000.pkl", + "/behaviors/custom/Nerul_Kick/short_kick_R4_14400000.pkl" + ][self.world.robot.type]), 'rb') as f: + self.model = pickle.load(f) + + def execute(self, reset, direction, abort=False): + ''' + Parameters + ---------- + orientation : float + absolute or relative orientation of torso (relative to imu_torso_orientation), in degrees + set to None to dribble towards the opponent's goal (is_orientation_absolute is ignored) + is_orientation_absolute : bool + True if orientation is relative to the field, False if relative to the robot's torso + speed : float + speed from 0 to 1 (scale is not linear) + stop : bool + return True immediately if walking, wind down if dribbling, and return True when possible + ''' + + w = self.world + r = self.world.robot + b = w.ball_rel_torso_cart_pos + t = w.time_local_ms + gait: Step_Generator = self.behavior.get_custom_behavior_object("Walk").env.step_generator + + if reset: + self.kick_flag = 0 + self.phase = 0 + self.reset_time = t + + + if self.phase == 0: + biased_dir = M.normalize_deg(direction + self.bias_dir) # add bias to rectify direction + ang_diff = abs( + M.normalize_deg(biased_dir - r.loc_torso_orientation)) # the reset was learned with loc, not IMU + + next_pos, next_ori, dist_to_final_target = self.path_manager.get_path_to_ball( + x_ori=biased_dir, x_dev=-self.ball_x_center, y_dev=-self.ball_y_center, torso_ori=biased_dir) + print(w.ball_last_seen > t - w.VISUALSTEP_MS and ang_diff < 5 and + t - w.ball_abs_pos_last_update < 100 and # ball absolute location is recent + dist_to_final_target < 0.025 and # if absolute ball position is updated + not gait.state_is_left_active and gait.state_current_ts == 2 and # walk gait phase is adequate + t - self.reset_time > 50) + if (w.ball_last_seen > t - w.VISUALSTEP_MS and ang_diff < 5 and + t - w.ball_abs_pos_last_update < 100 and # ball absolute location is recent + dist_to_final_target < 0.025 and # if absolute ball position is updated + not gait.state_is_left_active and gait.state_current_ts == 2 and # walk gait phase is adequate + t - self.reset_time > 500): # to avoid kicking immediately without preparation & stability + self.phase = 1 + print("kick") + self.env.kick_ori = direction + obs = self.env.observe(True) + action = run_mlp(obs, self.model) + self.env.execute(action) + else: + dist = max(0.07, dist_to_final_target) + reset_walk = reset and self.behavior.previous_behavior != "Walk" # reset walk if it wasn't the previous behavior + self.behavior.execute_sub_behavior("Walk", reset_walk, next_pos, True, next_ori, True, + dist) # target, is_target_abs, ori, is_ori_abs, distance + self.phase = 0 + return abort # abort only if self.phase == 0 + else: + if (self.phase > 20): + return abort + print("kick") + self.env.kick_ori = direction + obs = self.env.observe(False) + action = run_mlp(obs, self.model) + self.env.execute(action) + self.phase += 1 + + def is_ready(self): + ''' Returns True if this behavior is ready to start/continue under current game/robot conditions ''' + return True diff --git a/behaviors/custom/Nerul_Kick/__pycache__/Env.cpython-313.pyc b/behaviors/custom/Nerul_Kick/__pycache__/Env.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..58e5c57199cd7e60a0d5a143934e399e2bfdc0e4 GIT binary patch literal 5553 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 literal 0 HcmV?d00001 diff --git a/behaviors/custom/Nerul_Kick/best_model.zip.pkl b/behaviors/custom/Nerul_Kick/best_model.zip.pkl new file mode 100644 index 0000000000000000000000000000000000000000..ab492b0f90b3b2212d923b7f36d470297a5c04a7 GIT binary patch literal 37790 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�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 literal 0 HcmV?d00001 diff --git a/behaviors/custom/Nerul_Kick/long_kick_R2_28262400.pkl b/behaviors/custom/Nerul_Kick/long_kick_R2_28262400.pkl new file mode 100644 index 0000000000000000000000000000000000000000..3fec76fdec905fb762c62e6e76277d4607b422c8 GIT binary patch literal 20820 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ð${o+@uwfFH_x z!Ou>EHi^d*___pKQ%?Xcl7s!hHDKkOgr;s9>`=ugd{t3SPVc@>r~i|K70T4Tj&0 z(k+ih$gZwXTJj}^&S;CXSK7S+r)zeAo=*t*vb2Vz*kn-iL$|SLhCbHniEt+>v|)VT zZ`ydj141-f;iGf}d(QbfF8*>K_Q$?O_flO@H(Ua(Xh&y^IPfN#?ZhR{{QT0~EVz8x z6Rg~2xk*h@So&IqG}}+0E=zV(VYPYiuKX%IJmyVILNcL|KR@s!;RLO>E{B~T8|g)l zT8PeHfvdEh!`l<0_{6jodrfUwS8-Rc71f7~Giq$xGf_HUEEw7Y8p)ao0uacxp~&fS zC=m~$A8LP*4I__vGmD%+nU5PX+e`8Hw|w&F3n6d(s;Qv;a=h8In$GS$N@xg!vp0OD z-NUc(p2=1;=Vd}{XawB99|@Zho$=V38R!>v4qRWP0xjGO8lw$3Y*0^z*0?Z2VyEGy zu4Vd$Vq1mbW-Tr(>i=_ zs|t_QWzAlDwVyn(7J^3`eX-GHI$8@I2j>PpRxSy~|9)NIsk^O zKO@3=uj#=J7IEZ-r#dZ@;=tnLW5}Nwg>ss5tdhhVRDNj&n^Q}$^Y98P^WYz3|8i$k zpC3WZ9}WLIBA+C(d)@YpX+iw&7X1Iy@)P-^^ONG|vVV$CFgiPKFpsCiGoHswXl2!Y zzF_Y}_MC~LmMNb|ec}uHf7&?ncPzB7j~jbrD2`-m9%xXGQq+C#wKF#0Q0gQ}iI5Nt z8kJJ!DMTR^Q5i!S@4dDm4RWYdh&qXAQc0!K@ZRrrJwHBw!v5uZt^Hk}&r*7$#e>^& zA;3wJ^~Mfi|H>X=K)VhVYz(FU+r?M5TJm2PUs*x|%^9|tL?d-jgI~gbM2glc!0GZG zlBTW#w`|H`lD#CE_Q`^mj0wP?e09?LJrkw~7-9RrgR7=4^}SdE!yD7yJA1{T za%^o#azi$;%U7qeNV%NjeKzU*aZHR4qy~-W;gJX1l8 zUvU%+G@mnF<8YjPyqz^VjiaTjrQ!23Pk1|d6t&1nf|pAULF-d$Fx^2N+MmH;(5!(ZeEr##%V%`JjNMb&l@A;yi+!{`T?o}hS={YyG;Ydp z!GNnTF}8Xt9L|xVioMnN^_&kZdXq<2Nvy;0uLEF_6^K8*;=xg5Ey4-K5K(K-yT?aB zVA2y|h({E+|^%!5sN5y1k3+`&Pp3JvLNsG$2ZJ}8!lLCN!EZ1^DCU!hH7 z>viB+nhPI$Oiv{1)61dKi|}6tzF;8iWV#KW za6Z?B9F|xGa`*Q0C7CZpCuX#XjFL6sA^5SWwTUowu_nvczmHq;%*o#eHqygOY`DYd z-NF|~1HeGCUif9`wQ&8aZS4GSPaHb@MGTimh|1!d!8f6bxIQbcx^?{m(VLS_jygAr zHeB0B2NRQtv05CnN*~RgbYqx)`BmKGoeh@;Rp8}zLq1X}oBU)XNi)?9EZX>ad4tKz3n6e#xKsGbk}LJ)JlqXwe7-ZU1xBh zawgSZ8AsaZYhcoYFq-BrPoE`E7n*Nt0Na&{d=%*LD9mMAeIb~Z@r6m$PvJ_s9jNPg z9lIB)i!(~V4Q4f<+OiM`5X_)&$J&62v?LYdzF587hhCx;%poTP|a!RX>>V)F4oeI<=)D$G}8yq%tPD$c)-)hb3Y9Crii%dfLaRy{Y`oEhzdldk=B;wnIwg!Qvb=^~ zV+v8%G?;7py1;|EQ>g4{5gf~PgPV6dS*WuM-EUV7&RmAfIHSbpNVgH6s=Xv8DUvB% zzX8u59KfUt3;1NEGBPahf-!cg)O+J?NE~wt+uMXx;P?r%eXc-avnt=2nT=c19^>;* z#r*aaLs9qCU_3ZqgYMs92NmgNs8Q$$8Fjh%!E7@<6&3=1g2O~h%(D4s%>}QBV#p{; z#ciDrP`)9B7VoYT{q7DBDPPv3;ac`+zd{wXRsX`#uGNgJ@x$x)$DzdJCVs3Xm^}HC zNxm7z5}9AtEaagQm~AbmzB$S0ekQRhc&!ms{!rv+CPjfs${g4y7|)_475U#T-_b^` z6bCgz;j4Wt%n-k2lFkV{J==mSp31zsxW2kdy`!DGoD+_KjUp$*rI&^(Df|%3qBGvOK}da zevQ|p!>P=JFCg^X#6CuifNXp95ThoCS$5OC6c{xIRoqGxj^i7A=S8c!WZpcqi+877*GgXA!4sl+t9L1k}|BY13>>?d`#sbZMIDLdaWRpw?BY()lRW_i!4vrE;ER+ESn>ho8DPaMsNmHB zoHyB#{xtU^JFlcb=AgJox6gxuej7fw#e$;7Nn$0QN4m;w5;~lrX}oy< z_Ng0kt}{MCvw++QD576f^f7AwL@^h>lz$1PG~eS0Jb5fYl_EcQcvJ@?JX~ng@kQ*} zC0#mtp&Siz=w~yw`#{gF(@>%P0FNwBgc(_vAwI>Q?fPxa`Po5C8(B&Z_Q+!Y(@an~ zJ(VBvl%^*3B8a>rq;h4U_*%?{PhGy1euOIYsWfGO4)%cJ<94#Zas;Wbj>L8QLqz?S zG4Mv~AhY(k4YPz};ICRa+Gwzch;-}Fy=FEGl=#6y!%JCW-zB{EaR($ldMD79e+#2} z-;*^O`jA!dnB5Yjl3yJI@M)nOu2^)KO@A|$UN?WpVABk!sef8U`bTiP)P0aQX$OnG zmn^=G5{ES7)~i_+QK2vwFB%W%}mH-rj&cmn+Zi>IB$ znENr%u(%qH-1?c;3Ve5xflGGE1pEi|3 zq1Pn-)!-p2_et=#A$iQ$T)^M22qUM)dEu4&Yq3)GHOaSZp&sq0Vf&p;eBMhZl=5_^ z5mLWN^4B$Vh(!I%c1Q;glV`WNrr3?2;BK zB}cIhZ6P2hyv(pEl-26RlZb>|LVwl3E88YmTm8MtQ%@c6$!he8Vr=xhA^3XE5$AYJ z;klY(ul8|1yoz0q&K|KStJWiG-=IJj#^pdtZ!ubny8(sNBBHJQj-3?vLPz5qx~amH zRf%%>@`7eexTi$t+s?s46%B+5n`p(&E99G15PVqq9Op}%Lfti0SkONKWi@|cN!|#^ zX>EXbt9VA{1(7#iN$e!irW-G7lHo;jNaKwh@G`oF*s4w!A3qKQ?d>GvQ!+~}%!9$9 z7BqPg085*+`IKELaM~yo_ubV5-4oHU-ZPYK3mzhUA@frXFd6Ah&7!?;lrCDlQ$H4KGpm)4QpMSuMoaZlJxd z&f!cATW(`@28ufl!oMnmSh8;}B<4(@kG#!LE@d-Wc=H;VK9!~D6^{>66uFI1JOhk1 zqWS|;+*H(o1sm7%D=!Q<6ei*OFPFgBR_uSc?Sgk#JJ`&-3jDzILNHeFLx~zwG#pV$ zrp9T5k$CTY<<tuzjn|_mbI-!}m;ojxR52>Ri>~p%Kry9_yf2lcTNP4JW6wz%?)VmZ z>`dsl7mYBX_YRpCS`O7U;gHiK$tTFXhBiMrdbQ;dgp@akM7f=9Do!@g5rG2pE`O|NU?b7$vqrvPg{>@dN9h zlXQ}3wiWZnO{6DW_38e13E0-P5}z15@r^Pu5dKWe>{SY=fF<&|>l&HTcYn~6`iiXz z9U!r#l&sYmg}cN#e$il&cxF3`FGm%@*dwc`&udo*?$r|i@8hug;!6hHEx$K?gz4E@R!)rDjOXF+dI!g_^SYld&79rC5*H2zjY}5KK0`z)P0Pi!;I&H>4&*&Y>W>_E@2`P0s3{y$TW#s9k7bBVUgevB53{>gKG>VSyB#uwgt`ZFQoBUe@5Ry^!|m?uI07 z8ERVOK=rqOW6OGT=&2$F>{XW+wYD6^p(RVWgZga9m^1*(f7|f*Q);~Ggc={N%ZG_h z8hqeysp>sD!`VmgbG)~G6Q6rRhQ6#HLD$9pLl2#;g0*#3petjI3tgA+E808w%cx~k zRXZH`(p3@Su8Xh$$LcQ!o3r9sKcipU{snx&&{lZ8wbUF&<#6!QMI0S zuNw#P+coIfLT}b>9>&hwydg!R09Z{%bJd>5V76!{HyJO%RV32bdXK5}QII~(tz1YQ z<5ti|EB4TN39m^_=|Nn1_#iL&(a!D0`~@-cE2x@^3Ag(Y!}pHfNJoqq&-3nDqQv&s X>}mF4^8XbeDpP$?{(zT;0xknbB687@ufRFa%r)u8h*GYO&4ZvV!n^}fPEmE z#j0$U!%VS$j`7n1PNRDL)wAQVq)2fvq#qS>xh2e=v7t-OJ|!CSK3avmWa)-~Kbh##ousGNglyl#ZJf{h!E|R1(MPWq zleEc5cnW%o{7*nV#r|J7?I1eMQ*JUuz{j_@JPr50I!K@I3ZY5~pXude|EO|g9c>-| zL%#AvpsV^dJo0=Ev1UH-@qPm}30;b6W+HUC%Mi)xJdTatGTfL$q9jTE1{3zagjns5 zftSN(u<+X%xLr0tlBZ0?U(Fi0(!7YQ9{551vs;Pwr6{_e%8}r}Xqq4P5?tN-adzl1 z{TDL8E>X3hfB!SYg<1cR7_CgpH#@K6zJJ}s`>7p{B&&eQ^a-+EC5UuKmSFYym*icU zAlKl#E7@KyhaNKv>6ggdCgUCaAl#gV>6+?f!MF_Xk#0B?T}r2=&ognb%Yc*|7RIpi z>aa8-g-lC2MO&ZeY{boW?bGq z2OnFkCD3-A(c+h(%Pnf5J&EDzc#H9tn0HgN&$jgEv_f)945+p1KO*Du0-ATK6a8QB zXh+s_n$E~GC#0Ims9z~{p&qCwB@0{2;>iX0#OU1GO=lliLku&rL3SoTG&AdP%jsC? zw)zj*fW0_utBH4q7vRh9=V5tr2tBbsk52H+QA;@yu531C5;s@i@zafTnuRYEzbqjp z1=Vn(9^t~pS(x#n65OSiLQ$+LTI7C#Qaus6ZKR5c;gwKUq5&JtSCW?#A><9NAXT?b zF(myIoU@kY?MqdK|E_YFVLky=4SP*Y?zux~K8O4JiyAqo3b;}13FNyOAuGe-);-$;h27?BZgqp@z^>HC~B@GQO(Y=^@c zR|^q{8vfgKqQJ1J%ekK97(b(W$7fQ{l||I=!3;27d4Sesa8WR51r$q%(ue({_|M@i zNn4gnRNGmsa!|pF3mx>{=?=6Hn8Uj2euh99Lt;NDOgD}d6XW3j$UZe+Hu7j1dKQbJ z)T}e)Foz$1FxD{dc?bKtUXim&5#?C^t`qtdQ=Z{K_W@ zf0q+(4bvg-9|wYHu|5;}Xac8)cA=T6HQO=LOJ7-4Fl19Bm^Csm;_%qMPu*9!KcaC$jm!T&xhY5^HSolKuHNxmz=|IA;~0b zh75f!)rhgZmh`P?EPLHHn?Bd7hOx$j_{b@P=8lA8eZgO-3_FQ5q83suV+bdJp%Gzo z$m0MNymGJ-G!6vAJ3L4BNu8rwm%H)T&H<7e%FmsVDTJ^@g$I9j(WBa-5WVF#ZL*T* zw$<#zx4Y-C0er=HXygOY^f^r{hA5en^@4sHGltOB(pXgy15c8d*8T-L&~_dUoVYSCn6BnXBZh9Ga538!pD0os52#@cO_f}I{6=vSRi z^EIdA;oU)m^JoPan;RqFZwVY%i6!A5wt|hR5Z(+{XQM4-=_@I9RLN81HvbbRJ)cg~ zL#tjwaGoayJiJB>Qm>GMFHR7(_+!X?523N)&xoQ7!Q~APNM=qS;hwf`3a#79mA2Xf z9*QS$TU!O$mtTvXo43HdP!_waLpe8Z?!`;{T2cQVV6VU%s$4F}yZ&e^M$bRM_%sHm6j5n*K5L&73>))`Fj~KWc+dYz+Vnp*{n4C-74J{sv$9gsdGIzS z95Tl}!tA57d~D}w-(tO`-Kr}D!6s5tHp2kDJ(h~f0GXOohB#Er+5;|R!!w5gB;h5&k!MqusG{^Y_yz@?_fAg)W z!wx}G#=VYj=6ln_8D^8YYcqb;)4_d44m9(G6xVf;IG(UwLZ>>lqT5p~;(Yx#t8o1e zeW!Ak{CIf^{jcdT0@osG-4q9`G;AUAW23ltoiGi`-wS8@p40NHa^MpF9uA!Nk8X&{ zr;)QFh=#ZUT)Fdw%w+V@@kb#&tD^@tCKBB4`<~F+9tfTphfUPIY)X( zb8J3|yVk>mn%0xLl_#-UdO!JXpaaL1&EcE>2pyaKm_48~2Q;~Qpswc$1*3hePU8-I z)_fKJUiYJ%*kj;hYl{DxxX_|*%*)S>rN{MEAWpp+A{_3)$4wqEEsX=Y=L+GwsWCc5 z{GsNDWA^8jU(n3X3m3;?i;u9&ESJ{V2V-A%Ir=Wkg1>8&ct^{u zvF++1{1e46M$b1=*`rfoYFrPkKK-4%*v6r~-H(_PI+^f0I}2t#u7~MeVu;f(5%0A~ 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

@=@>#MA(b-4mHG%u#xlz6yNB?i)crJ+{E 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 literal 0 HcmV?d00001 diff --git a/behaviors/custom/Nerul_Kick/model_14336000_steps.zip.pkl b/behaviors/custom/Nerul_Kick/model_14336000_steps.zip.pkl new file mode 100644 index 0000000000000000000000000000000000000000..d5acf525ccf80893b2beafb7c44ab2434051e14a GIT binary patch literal 37790 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≷R(%F?9~iPLD@hE|}PC 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 ODdD@<*CWZp!}LGu$H5K& literal 0 HcmV?d00001 diff --git a/behaviors/custom/Nerul_Kick/short_kick_R3_14976000.pkl b/behaviors/custom/Nerul_Kick/short_kick_R3_14976000.pkl new file mode 100644 index 0000000000000000000000000000000000000000..1e4faf3511cb9b30764042ff9ffcaa1c8cd40077 GIT binary patch literal 21076 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 SCs&vv5xO&UYv$IihW`a~WEH;v literal 0 HcmV?d00001 diff --git a/behaviors/custom/Sprint/Env.py b/behaviors/custom/Sprint/Env.py new file mode 100644 index 0000000..ece072d --- /dev/null +++ b/behaviors/custom/Sprint/Env.py @@ -0,0 +1,183 @@ +from agent.Base_Agent import Base_Agent +from behaviors.custom.Step.Step_Generator import Step_Generator +from math_ops.Math_Ops import Math_Ops as M +import math +import numpy as np + + +class Env: + def __init__(self, base_agent: Base_Agent, step_width) -> None: + + self.gym_last_internal_abs_ori = None + self.world = base_agent.world + self.ik = base_agent.inv_kinematics + + # State space + self.obs = np.zeros(76, np.float32) + + # Step behavior defaults + self.STEP_DUR = 8 + self.STEP_Z_SPAN = 0.02 + self.STEP_Z_MAX = 0.70 + + # IK + r = self.world.robot + nao_specs = self.ik.NAO_SPECS + self.leg_length = nao_specs[1] + nao_specs[3] # upper leg height + lower leg height + feet_y_dev = nao_specs[0] * step_width # wider step + sample_time = r.STEPTIME + max_ankle_z = nao_specs[5] + + self.step_generator = Step_Generator(feet_y_dev, sample_time, max_ankle_z) + self.DEFAULT_ARMS = np.array([-90, -90, 8, 8, 90, 90, 70, 70], np.float32) + + self.dribble_rel_orientation = None # relative to imu_torso_orientation (in degrees) + self.dribble_speed = 1 + + def observe(self, init=False, virtual_ball=False): + + w = self.world + r = self.world.robot + + if init: # reset variables + self.step_counter = 0 + self.act = np.zeros(16, np.float32) # memory variable + + # index observation naive normalization + self.obs[0] = min(self.step_counter, 12 * 8) / 100 # simple counter: 0,1,2,3... + self.obs[1] = r.loc_head_z * 3 # z coordinate (torso) + self.obs[2] = r.loc_head_z_vel / 2 # z velocity (torso) + self.obs[3] = r.imu_torso_roll / 15 # absolute torso roll in deg + self.obs[4] = r.imu_torso_pitch / 15 # absolute torso pitch in deg + self.obs[5:8] = r.gyro / 100 # gyroscope + self.obs[8:11] = r.acc / 10 # accelerometer + + self.obs[11:17] = r.frp.get('lf', np.zeros(6)) * (10, 10, 10, 0.01, 0.01, + 0.01) # left foot: relative point of origin (p) and force vector (f) -> (px,py,pz,fx,fy,fz)* + self.obs[17:23] = r.frp.get('rf', np.zeros(6)) * (10, 10, 10, 0.01, 0.01, + 0.01) # right foot: relative point of origin (p) and force vector (f) -> (px,py,pz,fx,fy,fz)* + # *if foot is not touching the ground, then (px=0,py=0,pz=0,fx=0,fy=0,fz=0) + + self.obs[23:43] = r.joints_position[2:22] / 100 # position of all joints except head & toes (for robot type 4) + self.obs[43:63] = r.joints_speed[2:22] / 6.1395 # speed of all joints except head & toes (for robot type 4) + + ''' + Expected observations for walking state: + Time step R 0 1 2 3 4 5 6 7 0 + Progress 1 0 .14 .28 .43 .57 .71 .86 1 0 + Left leg active T F F F F F F F F T + ''' + + if init: # the walking parameters refer to the last parameters in effect (after a reset, they are pointless) + self.obs[63] = 1 # step progress + self.obs[64] = 1 # 1 if left leg is active + self.obs[65] = 0 # 1 if right leg is active + self.obs[66] = 0 + else: + self.obs[63] = self.step_generator.external_progress # step progress + self.obs[64] = float(self.step_generator.state_is_left_active) # 1 if left leg is active + self.obs[65] = float(not self.step_generator.state_is_left_active) # 1 if right leg is active + self.obs[66] = math.sin(self.step_generator.state_current_ts / self.step_generator.ts_per_step * math.pi) + + # Ball + ball_rel_hip_center = self.ik.torso_to_hip_transform(w.ball_rel_torso_cart_pos) + ball_dist_hip_center = np.linalg.norm(ball_rel_hip_center) + + if init: + self.obs[67:70] = (0, 0, 0) # Initial velocity is 0 + elif w.ball_is_visible: + self.obs[67:70] = (ball_rel_hip_center - self.obs[70:73]) * 10 # Ball velocity, relative to ankle's midpoint + + self.obs[70:73] = ball_rel_hip_center # Ball position, relative to hip + self.obs[73] = ball_dist_hip_center * 2 + + if virtual_ball: # simulate the ball between the robot's feet + self.obs[67:74] = (0, 0, 0, 0.05, 0, -0.175, 0.36) + + ''' + Create internal target with a smoother variation + ''' + + MAX_ROTATION_DIFF = 20 # max difference (degrees) per visual step + MAX_ROTATION_DIST = 80 + + if init: + self.internal_rel_orientation = 0 + self.internal_target_vel = 0 + self.gym_last_internal_abs_ori = r.imu_torso_orientation # for training purposes (reward) + + # ---------------------------------------------------------------- compute internal target + + if w.vision_is_up_to_date: + previous_internal_rel_orientation = np.copy(self.internal_rel_orientation) + + internal_ori_diff = np.clip(M.normalize_deg(self.dribble_rel_orientation - self.internal_rel_orientation), + -MAX_ROTATION_DIFF, MAX_ROTATION_DIFF) + self.internal_rel_orientation = np.clip(M.normalize_deg(self.internal_rel_orientation + internal_ori_diff), + -MAX_ROTATION_DIST, MAX_ROTATION_DIST) + + # Observations + self.internal_target_vel = self.internal_rel_orientation - previous_internal_rel_orientation + + self.gym_last_internal_abs_ori = self.internal_rel_orientation + r.imu_torso_orientation + + # ----------------------------------------------------------------- observations + + self.obs[74] = self.internal_rel_orientation / MAX_ROTATION_DIST + self.obs[75] = self.internal_target_vel / MAX_ROTATION_DIFF + + return self.obs + + def execute_ik(self, l_pos, l_rot, r_pos, r_rot): + r = self.world.robot + # Apply IK to each leg + Set joint targets + + # Left leg + indices, self.values_l, error_codes = self.ik.leg(l_pos, l_rot, True, dynamic_pose=False) + + r.set_joints_target_position_direct(indices, self.values_l, harmonize=False) + + # Right leg + indices, self.values_r, error_codes = self.ik.leg(r_pos, r_rot, False, dynamic_pose=False) + + r.set_joints_target_position_direct(indices, self.values_r, harmonize=False) + + def execute(self, action): + + r = self.world.robot + # Actions: + # 0,1,2 left ankle pos + # 3,4,5 right ankle pos + # 6,7,8 left foot rotation + # 9,10,11 right foot rotation + # 12,13 left/right arm pitch + # 14,15 left/right arm roll + + # exponential moving average + self.act = 0.85 * self.act + 0.15 * action * 0.7 * 0.95 * self.dribble_speed + + # execute Step behavior to extract the target positions of each leg (we will override these targets) + lfy, lfz, rfy, rfz = self.step_generator.get_target_positions(self.step_counter == 0, self.STEP_DUR, + self.STEP_Z_SPAN, + self.leg_length * self.STEP_Z_MAX) + + # Leg IK + a = self.act + l_ankle_pos = (a[0] * 0.025 - 0.01, a[1] * 0.01 + lfy, a[2] * 0.01 + lfz) + r_ankle_pos = (a[3] * 0.025 - 0.01, a[4] * 0.01 + rfy, a[5] * 0.01 + rfz) + l_foot_rot = a[6:9] * (2, 2, 3) + r_foot_rot = a[9:12] * (2, 2, 3) + + # Limit leg yaw/pitch (and add bias) + l_foot_rot[2] = max(0, l_foot_rot[2] + 18.3) + r_foot_rot[2] = min(0, r_foot_rot[2] - 18.3) + + # Arms actions + arms = np.copy(self.DEFAULT_ARMS) # default arms pose + arms[0:4] += a[12:16] * 4 # arms pitch+roll + + # Set target positions + self.execute_ik(l_ankle_pos, l_foot_rot, r_ankle_pos, r_foot_rot) # legs + r.set_joints_target_position_direct(slice(14, 22), arms, harmonize=False) # arms + + self.step_counter += 1 diff --git a/behaviors/custom/Sprint/Sprint.py b/behaviors/custom/Sprint/Sprint.py new file mode 100644 index 0000000..94b50c8 --- /dev/null +++ b/behaviors/custom/Sprint/Sprint.py @@ -0,0 +1,178 @@ +from agent.Base_Agent import Base_Agent +from behaviors.custom.Sprint.Env import Env +from math_ops.Math_Ops import Math_Ops as M +from math_ops.Neural_Network import run_mlp +import numpy as np +import pickle + + +class Sprint: + + def __init__(self, base_agent: Base_Agent) -> None: + self.behavior = base_agent.behavior + self.path_manager = base_agent.path_manager + self.world = base_agent.world + self.description = "RL dribble" + self.auto_head = True + self.env = Env(base_agent, 0.9 if self.world.robot.type == 3 else 1.2) + + with open(M.get_active_directory([ + "/behaviors/custom/Sprint/Sprint_R0.pkl", + "/behaviors/custom/Sprint/Sprint_R1.pkl", + "/behaviors/custom/Sprint/Sprint_R2.pkl", + "/behaviors/custom/Sprint/Sprint_R3.pkl", + "/behaviors/custom/Sprint/Sprint_R4.pkl" + ][self.world.robot.type]), 'rb') as f: + self.model = pickle.load(f) + + def define_approach_orientation(self): + + w = self.world + b = w.ball_abs_pos[:2] + me = w.robot.loc_head_position[:2] + + self.approach_orientation = None + + MARGIN = 0.8 # safety margin (if ball is near the field limits by this amount, the approach orientation is considered) + M90 = 90 / MARGIN # auxiliary variable + DEV = 25 # when standing on top of sidelines or endlines, the approach direction deviates from that line by this amount + MDEV = (90 + DEV) / MARGIN # auxiliary variable + + a1 = -180 # angle range start (counterclockwise rotation) + a2 = 180 # angle range end (counterclockwise rotation) + + if b[1] < -10 + MARGIN: + if b[0] < -15 + MARGIN: + a1 = DEV - M90 * (b[1] + 10) + a2 = 90 - DEV + M90 * (b[0] + 15) + elif b[0] > 15 - MARGIN: + a1 = 90 + DEV - M90 * (15 - b[0]) + a2 = 180 - DEV + M90 * (b[1] + 10) + else: + a1 = DEV - MDEV * (b[1] + 10) + a2 = 180 - DEV + MDEV * (b[1] + 10) + elif b[1] > 10 - MARGIN: + if b[0] < -15 + MARGIN: + a1 = -90 + DEV - M90 * (b[0] + 15) + a2 = -DEV + M90 * (10 - b[1]) + elif b[0] > 15 - MARGIN: + a1 = 180 + DEV - M90 * (10 - b[1]) + a2 = 270 - DEV + M90 * (15 - b[0]) + else: + a1 = -180 + DEV - MDEV * (10 - b[1]) + a2 = -DEV + MDEV * (10 - b[1]) + elif b[0] < -15 + MARGIN: + a1 = -90 + DEV - MDEV * (b[0] + 15) + a2 = 90 - DEV + MDEV * (b[0] + 15) + elif b[0] > 15 - MARGIN and abs(b[1]) > 1.2: + a1 = 90 + DEV - MDEV * (15 - b[0]) + a2 = 270 - DEV + MDEV * (15 - b[0]) + + cad = M.vector_angle(b - me) # current approach direction + + a1 = M.normalize_deg(a1) + a2 = M.normalize_deg(a2) + + if a1 < a2: + if a1 <= cad <= a2: + return # current approach orientation is within accepted range + else: + if a1 <= cad or cad <= a2: + return # current approach orientation is within accepted range + + a1_diff = abs(M.normalize_deg(a1 - cad)) + a2_diff = abs(M.normalize_deg(a2 - cad)) + + self.approach_orientation = a1 if a1_diff < a2_diff else a2 # fixed normalized orientation + + def execute(self, reset, target, orientation, is_orientation_absolute, speed=1, stop=False): + ''' + Parameters + ---------- + target + orientation : float + absolute or relative orientation of torso (relative to imu_torso_orientation), in degrees + set to None to dribble towards the opponent's goal (is_orientation_absolute is ignored) + is_orientation_absolute : bool + True if orientation is relative to the field, False if relative to the robot's torso + speed : float + speed from 0 to 1 (scale is not linear) + stop : bool + return True immediately if walking, wind down if dribbling, and return True when possible + ''' + w = self.world + r = self.world.robot + me = r.loc_head_position[:2] + b = w.ball_abs_pos[:2] + b_rel = w.ball_rel_torso_cart_pos[:2] + b_dist = np.linalg.norm(b - me) + behavior = self.behavior + reset_dribble = False + lost_ball = (w.ball_last_seen <= w.time_local_ms - w.VISUALSTEP_MS) or np.linalg.norm(b_rel) > 0.4 + + if reset: + self.phase = 0 + if behavior.previous_behavior == "Push_RL" and 0 < b_rel[0] < 0.25 and abs(b_rel[1]) < 0.07: + self.phase = 1 + reset_dribble = True + + if self.phase == 0: # prepare to sprint + self.phase = 1 + reset_dribble = True + + if stop: + return True + + if self.phase == 1 and (stop): # go back to walking + self.phase += 1 + elif self.phase == 1: # dribble + # ------------------------ 1. Define dribble parameters + self.env.dribble_speed = speed + if target is not None: + raw_target = target - r.loc_head_position[:2] + walk_rel_target = M.rotate_2d_vec(raw_target, -r.imu_torso_orientation) + orientation = M.vector_angle(walk_rel_target) + # Relative orientation values are decreased to avoid overshoot + if orientation is None: + if b[0] < 0: # dribble to the sides + if b[1] > 0: + dribble_target = (15, 5) + else: + dribble_target = (15, -5) + else: + dribble_target = None # go to goal + self.env.dribble_rel_orientation = \ + self.path_manager.get_dribble_path(optional_2d_target=dribble_target)[1] + elif is_orientation_absolute: + self.env.dribble_rel_orientation = M.normalize_deg(orientation - r.imu_torso_orientation) + else: # sprint use this + self.env.dribble_rel_orientation = float(orientation) # copy if numpy float + + # ------------------------ 2. Execute behavior + obs = self.env.observe(reset_dribble, virtual_ball=True) + action = run_mlp(obs, self.model) + self.env.execute(action) + + # wind down dribbling, and then reset phase + if self.phase > 1: + WIND_DOWN_STEPS = 60 + # ------------------------ 1. Define dribble wind down parameters + self.env.dribble_speed = 1 - self.phase / WIND_DOWN_STEPS + self.env.dribble_rel_orientation = 0 + + # ------------------------ 2. Execute behavior + obs = self.env.observe(reset_dribble, virtual_ball=True) + action = run_mlp(obs, self.model) + self.env.execute(action) + + # ------------------------ 3. Reset behavior + self.phase += 1 + if self.phase >= WIND_DOWN_STEPS - 5: + self.phase = 0 + return True + + return False + + def is_ready(self): + ''' Returns True if this behavior is ready to start/continue under current game/robot conditions ''' + return True diff --git a/behaviors/custom/Sprint/Sprint_R0.pkl b/behaviors/custom/Sprint/Sprint_R0.pkl new file mode 100644 index 0000000000000000000000000000000000000000..7d0e0502c4e0d761dca4c566258e9043879a0efa GIT binary patch literal 24148 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 literal 0 HcmV?d00001 diff --git a/behaviors/custom/Sprint/Sprint_R2.pkl b/behaviors/custom/Sprint/Sprint_R2.pkl new file mode 100644 index 0000000000000000000000000000000000000000..9d9d61f444e95ed5bf3e18d57f12b4ad5cc48645 GIT binary patch literal 24148 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 Szbk?mC0{?^)k&*YkNF>V#md$I literal 0 HcmV?d00001 diff --git a/behaviors/custom/Sprint/Sprint_R4.pkl b/behaviors/custom/Sprint/Sprint_R4.pkl new file mode 100644 index 0000000000000000000000000000000000000000..781d55ac9722c226ff719f5700b4e48633d4d87e GIT binary patch literal 24148 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 SCig$H2oFyW=LBbGqyGoMX5za5 literal 0 HcmV?d00001 diff --git a/behaviors/custom/Step/Step.py b/behaviors/custom/Step/Step.py new file mode 100644 index 0000000..04d7f3c --- /dev/null +++ b/behaviors/custom/Step/Step.py @@ -0,0 +1,59 @@ +from agent.Base_Agent import Base_Agent +from behaviors.custom.Step.Step_Generator import Step_Generator +import numpy as np + +class Step(): + + def __init__(self, base_agent : Base_Agent) -> None: + self.world = base_agent.world + self.ik = base_agent.inv_kinematics + self.description = "Step (Skill-Set-Primitive)" + self.auto_head = True + + nao_specs = self.ik.NAO_SPECS + self.leg_length = nao_specs[1] + nao_specs[3] # upper leg height + lower leg height + + feet_y_dev = nao_specs[0] * 1.2 # wider step + sample_time = self.world.robot.STEPTIME + max_ankle_z = nao_specs[5] + + # Initialize step generator with constants + self.step_generator = Step_Generator(feet_y_dev, sample_time, max_ankle_z) + + + def execute(self,reset, ts_per_step=7, z_span=0.03, z_max=0.8): + + lfy,lfz,rfy,rfz = self.step_generator.get_target_positions(reset, ts_per_step, z_span, self.leg_length * z_max) + + #----------------- Apply IK to each leg + Set joint targets + + # Left leg + indices, self.values_l, error_codes = self.ik.leg((0,lfy,lfz), (0,0,0), True, dynamic_pose=False) + for i in error_codes: + print(f"Joint {i} is out of range!" if i!=-1 else "Position is out of reach!") + + self.world.robot.set_joints_target_position_direct(indices, self.values_l) + + # Right leg + indices, self.values_r, error_codes = self.ik.leg((0,rfy,rfz), (0,0,0), False, dynamic_pose=False) + for i in error_codes: + print(f"Joint {i} is out of range!" if i!=-1 else "Position is out of reach!") + + self.world.robot.set_joints_target_position_direct(indices, self.values_r) + + # ----------------- Fixed arms + + indices = [14,16,18,20] + values = np.array([-80,20,90,0]) + self.world.robot.set_joints_target_position_direct(indices,values) + + indices = [15,17,19,21] + values = np.array([-80,20,90,0]) + self.world.robot.set_joints_target_position_direct(indices,values) + + return False + + + def is_ready(self): + ''' Returns True if Step Behavior is ready to start under current game/robot conditions ''' + return True \ No newline at end of file diff --git a/behaviors/custom/Step/Step_Generator.py b/behaviors/custom/Step/Step_Generator.py new file mode 100644 index 0000000..1efd6f8 --- /dev/null +++ b/behaviors/custom/Step/Step_Generator.py @@ -0,0 +1,75 @@ +import math + + +class Step_Generator(): + GRAVITY = 9.81 + Z0 = 0.2 + + def __init__(self, feet_y_dev, sample_time, max_ankle_z) -> None: + self.feet_y_dev = feet_y_dev + self.sample_time = sample_time + self.state_is_left_active = False + self.state_current_ts = 0 + self.switch = False # switch legs + self.external_progress = 0 # non-overlaped progress + self.max_ankle_z = max_ankle_z + + + def get_target_positions(self, reset, ts_per_step, z_span, z_extension): + ''' + Get target positions for each foot + + Returns + ------- + target : `tuple` + (Left leg y, Left leg z, Right leg y, Right leg z) + ''' + + assert type(ts_per_step)==int and ts_per_step > 0, "ts_per_step must be a positive integer!" + + #-------------------------- Advance 1ts + if reset: + self.ts_per_step = ts_per_step # step duration in time steps + self.swing_height = z_span + self.max_leg_extension = z_extension # maximum distance between ankle to center of both hip joints + self.state_current_ts = 0 + self.state_is_left_active = False + self.switch = False + elif self.switch: + self.state_current_ts = 0 + self.state_is_left_active = not self.state_is_left_active # switch leg + self.switch = False + else: + self.state_current_ts += 1 + + #-------------------------- Compute COM.y + W = math.sqrt(self.Z0/self.GRAVITY) + + step_time = self.ts_per_step * self.sample_time + time_delta = self.state_current_ts * self.sample_time + + y0 = self.feet_y_dev # absolute initial y value + y_swing = y0 + y0 * ( math.sinh((step_time - time_delta)/W) + math.sinh(time_delta/W) ) / math.sinh(-step_time/W) + + #-------------------------- Cap maximum extension and swing height + z0 = min(-self.max_leg_extension, self.max_ankle_z) # capped initial z value + zh = min(self.swing_height, self.max_ankle_z - z0) # capped swing height + + #-------------------------- Compute Z Swing + progress = self.state_current_ts / self.ts_per_step + self.external_progress = self.state_current_ts / (self.ts_per_step-1) + active_z_swing = zh * math.sin(math.pi * progress) + + #-------------------------- Accept new parameters after final step + if self.state_current_ts + 1 >= self.ts_per_step: + self.ts_per_step = ts_per_step # step duration in time steps + self.swing_height = z_span + self.max_leg_extension = z_extension # maximum distance between ankle to center of both hip joints + self.switch = True + + #-------------------------- Distinguish active leg + if self.state_is_left_active: + return y0+y_swing, active_z_swing+z0, -y0+y_swing, z0 + else: + return y0-y_swing, z0, -y0-y_swing, active_z_swing+z0 + diff --git a/behaviors/custom/Step/__pycache__/Step.cpython-313.pyc b/behaviors/custom/Step/__pycache__/Step.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..78ec1cf291bc8a0706f7e69908c13ecbc86d8d44 GIT binary patch literal 3302 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 literal 0 HcmV?d00001 diff --git a/behaviors/custom/Stop/Env.py b/behaviors/custom/Stop/Env.py new file mode 100644 index 0000000..508159b --- /dev/null +++ b/behaviors/custom/Stop/Env.py @@ -0,0 +1,197 @@ +from agent.Base_Agent import Base_Agent +from behaviors.custom.Step.Step_Generator import Step_Generator +from math_ops.Math_Ops import Math_Ops as M +import math +import numpy as np + + +class Env: + def __init__(self, base_agent: Base_Agent, step_width) -> None: + + self.walk_rel_orientation = None + self.walk_distance = None + self.walk_rel_target = None + self.gym_last_internal_abs_ori = None + self.world = base_agent.world + self.ik = base_agent.inv_kinematics + + # State space + self.obs = np.zeros(63, np.float32) + + # Step behavior defaults + self.STEP_DUR = 8 + self.STEP_Z_SPAN = 0.02 + self.STEP_Z_MAX = 0.70 + + # IK + r = self.world.robot + nao_specs = self.ik.NAO_SPECS + self.leg_length = nao_specs[1] + nao_specs[3] # upper leg height + lower leg height + feet_y_dev = nao_specs[0] * step_width # wider step + sample_time = r.STEPTIME + max_ankle_z = nao_specs[5] + + self.step_generator = Step_Generator(feet_y_dev, sample_time, max_ankle_z) + self.DEFAULT_ARMS = np.array([-90, -90, 8, 8, 90, 90, 70, 70], np.float32) + + self.dribble_rel_orientation = None # relative to imu_torso_orientation (in degrees) + self.dribble_speed = 1 + + def observe(self, init=False): + + r = self.world.robot + + if init: # reset variables + self.act = np.zeros(16, np.float32) # memory variable + self.step_counter = 0 + + # index observation naive normalization + self.obs[0] = min(self.step_counter, 15 * 8) / 100 # simple counter: 0,1,2,3... + self.obs[1] = r.loc_head_z * 3 # z coordinate (torso) + self.obs[2] = r.loc_head_z_vel / 2 # z velocity (torso) + self.obs[3] = r.imu_torso_roll / 15 # absolute torso roll in deg + self.obs[4] = r.imu_torso_pitch / 15 # absolute torso pitch in deg + self.obs[5:8] = r.gyro / 100 # gyroscope + self.obs[8:11] = r.acc / 10 # accelerometer + + self.obs[11:17] = r.frp.get('lf', np.zeros(6)) * (10, 10, 10, 0.01, 0.01, + 0.01) # left foot: relative point of origin (p) and force vector (f) -> (px,py,pz,fx,fy,fz)* + self.obs[17:23] = r.frp.get('rf', np.zeros(6)) * (10, 10, 10, 0.01, 0.01, + 0.01) # right foot: relative point of origin (p) and force vector (f) -> (px,py,pz,fx,fy,fz)* + # *if foot is not touching the ground, then (px=0,py=0,pz=0,fx=0,fy=0,fz=0) + + # Joints: Forward kinematics for ankles + feet rotation + arms (pitch + roll) + rel_lankle = self.ik.get_body_part_pos_relative_to_hip( + "lankle") # ankle position relative to center of both hip joints + rel_rankle = self.ik.get_body_part_pos_relative_to_hip( + "rankle") # ankle position relative to center of both hip joints + lf = r.head_to_body_part_transform("torso", r.body_parts['lfoot'].transform) # foot transform relative to torso + rf = r.head_to_body_part_transform("torso", r.body_parts['rfoot'].transform) # foot transform relative to torso + lf_rot_rel_torso = np.array( + [lf.get_roll_deg(), lf.get_pitch_deg(), lf.get_yaw_deg()]) # foot rotation relative to torso + rf_rot_rel_torso = np.array( + [rf.get_roll_deg(), rf.get_pitch_deg(), rf.get_yaw_deg()]) # foot rotation relative to torso + + # pose + self.obs[23:26] = rel_lankle * (8, 8, 5) + self.obs[26:29] = rel_rankle * (8, 8, 5) + self.obs[29:32] = lf_rot_rel_torso / 20 + self.obs[32:35] = rf_rot_rel_torso / 20 + self.obs[35:39] = r.joints_position[14:18] / 100 # arms (pitch + roll) + + # velocity + self.obs[39:55] = r.joints_target_last_speed[2:18] # predictions == last action + + ''' + Expected observations for walking state: + Time step R 0 1 2 3 4 5 6 7 0 + Progress 1 0 .14 .28 .43 .57 .71 .86 1 0 + Left leg active T F F F F F F F F T + ''' + + if init: # the walking parameters refer to the last parameters in effect (after a reset, they are pointless) + self.obs[55] = 1 # step progress + self.obs[56] = 1 # 1 if left leg is active + self.obs[57] = 0 # 1 if right leg is active + else: + self.obs[55] = self.step_generator.external_progress # step progress + self.obs[56] = float(self.step_generator.state_is_left_active) # 1 if left leg is active + self.obs[57] = float(not self.step_generator.state_is_left_active) # 1 if right leg is active + + ''' + Create internal target with a smoother variation + ''' + + MAX_LINEAR_DIST = 0.5 + MAX_LINEAR_DIFF = 0.014 # max difference (meters) per step + MAX_ROTATION_DIFF = 1.6 # max difference (degrees) per step + MAX_ROTATION_DIST = 45 + + if init: + self.internal_rel_orientation = 0 + self.internal_target = np.zeros(2) + + previous_internal_target = np.copy(self.internal_target) + + # ---------------------------------------------------------------- compute internal linear target + + rel_raw_target_size = np.linalg.norm(self.walk_rel_target) + + if rel_raw_target_size == 0: + rel_target = self.walk_rel_target + else: + rel_target = self.walk_rel_target / rel_raw_target_size * min(self.walk_distance, MAX_LINEAR_DIST) + + internal_diff = rel_target - self.internal_target + internal_diff_size = np.linalg.norm(internal_diff) + + if internal_diff_size > MAX_LINEAR_DIFF: + self.internal_target += internal_diff * (MAX_LINEAR_DIFF / internal_diff_size) + else: + self.internal_target[:] = rel_target + + # ---------------------------------------------------------------- compute internal rotation target + + internal_ori_diff = np.clip(M.normalize_deg(self.walk_rel_orientation - self.internal_rel_orientation), + -MAX_ROTATION_DIFF, MAX_ROTATION_DIFF) + self.internal_rel_orientation = np.clip(M.normalize_deg(self.internal_rel_orientation + internal_ori_diff), + -MAX_ROTATION_DIST, MAX_ROTATION_DIST) + + # ----------------------------------------------------------------- observations + + internal_target_vel = self.internal_target - previous_internal_target + + self.obs[58] = self.internal_target[0] / MAX_LINEAR_DIST + self.obs[59] = self.internal_target[1] / MAX_LINEAR_DIST + self.obs[60] = self.internal_rel_orientation / MAX_ROTATION_DIST + self.obs[61] = internal_target_vel[0] / MAX_LINEAR_DIFF + self.obs[62] = internal_target_vel[0] / MAX_LINEAR_DIFF + + return self.obs + + def execute_ik(self, l_pos, l_rot, r_pos, r_rot): + r = self.world.robot + # Apply IK to each leg + Set joint targets + + # Left leg + indices, self.values_l, error_codes = self.ik.leg(l_pos, l_rot, True, dynamic_pose=False) + + r.set_joints_target_position_direct(indices, self.values_l, harmonize=False) + + # Right leg + indices, self.values_r, error_codes = self.ik.leg(r_pos, r_rot, False, dynamic_pose=False) + + r.set_joints_target_position_direct(indices, self.values_r, harmonize=False) + + def execute(self, action): + + r = self.world.robot + # exponential moving average + self.act = 0.5 * self.act + 0.5 * action + + # execute Step behavior to extract the target positions of each leg (we will override these targets) + lfy, lfz, rfy, rfz = self.step_generator.get_target_positions(self.step_counter == 0, self.STEP_DUR, + self.STEP_Z_SPAN, + self.leg_length * self.STEP_Z_MAX) + + # Leg IK + a = self.act + l_ankle_pos = (a[0] * 0.025 - 0.01, a[1] * 0.01 + lfy, a[2] * 0.01 + lfz) + r_ankle_pos = (a[3] * 0.025 - 0.01, a[4] * 0.01 + rfy, a[5] * 0.01 + rfz) + l_foot_rot = a[6:9] * (2, 2, 3) + r_foot_rot = a[9:12] * (2, 2, 3) + + # Limit leg yaw/pitch (and add bias) + l_foot_rot[2] = max(0, l_foot_rot[2] + 18.3) + r_foot_rot[2] = min(0, r_foot_rot[2] - 18.3) + + # Arms actions + arms = np.copy(self.DEFAULT_ARMS) # default arms pose + arms[0:4] += a[12:16] * 4 # arms pitch+roll + + # Set target positions + self.execute_ik(l_ankle_pos, l_foot_rot, r_ankle_pos, r_foot_rot) # legs + r.set_joints_target_position_direct(slice(14, 22), arms, harmonize=False) # arms + + self.step_counter += 1 + return self.step_counter > 33 \ No newline at end of file diff --git a/behaviors/custom/Stop/Stop.py b/behaviors/custom/Stop/Stop.py new file mode 100644 index 0000000..0151073 --- /dev/null +++ b/behaviors/custom/Stop/Stop.py @@ -0,0 +1,69 @@ +from agent.Base_Agent import Base_Agent +from behaviors.custom.Stop.Env import Env +from math_ops.Math_Ops import Math_Ops as M +from math_ops.Neural_Network import run_mlp +import numpy as np +import pickle + + +class Stop: + + def __init__(self, base_agent: Base_Agent) -> None: + self.last_executed = 0 + self.behavior = base_agent.behavior + self.path_manager = base_agent.path_manager + self.world = base_agent.world + self.description = "RL dribble" + self.auto_head = True + self.env = Env(base_agent, 0.9 if self.world.robot.type == 3 else 1.2) + + with open(M.get_active_directory([ + "/behaviors/custom/Stop/best_model.zip.pkl", + "/behaviors/custom/Stop/best_model.zip.pkl", + "/behaviors/custom/Stop/best_model.zip.pkl", + "/behaviors/custom/Stop/best_model.zip.pkl", + "/behaviors/custom/Stop/best_model.zip.pkl" + ][self.world.robot.type]), 'rb') as f: + self.model = pickle.load(f) + + def execute(self, reset): + ''' + Parameters + ---------- + target_2d : array_like + 2D target in absolute or relative coordinates (use is_target_absolute to specify) + is_target_absolute : bool + True if target_2d is in absolute coordinates, False if relative to robot's torso + orientation : float + absolute or relative orientation of torso, in degrees + set to None to go towards the target (is_orientation_absolute is ignored) + is_orientation_absolute : bool + True if orientation is relative to the field, False if relative to the robot's torso + distance : float + distance to final target [0,0.5] (influences walk speed when approaching the final target) + set to None to consider target_2d the final target + ''' + r = self.world.robot + + # ------------------------ 0. Override reset (since some behaviors use this as a sub-behavior) + if reset and self.world.time_local_ms - self.last_executed == 20: + reset = False + self.last_executed = self.world.time_local_ms + + # ------------------------ 1. Define walk parameters + + self.env.walk_rel_target = (0, 0) + self.env.walk_distance = 0 # MAX_LINEAR_DIST = 0.5 + self.env.walk_rel_orientation = 0 + + # ------------------------ 2. Execute behavior + + obs = self.env.observe(reset) + action = run_mlp(obs, self.model) + if self.env.execute(action): + return True + return False + + def is_ready(self): + ''' Returns True if this behavior is ready to start/continue under current game/robot conditions ''' + return True diff --git a/behaviors/custom/Stop/Stop_R1.pkl b/behaviors/custom/Stop/Stop_R1.pkl new file mode 100644 index 0000000000000000000000000000000000000000..57899806fb1d39c7017e8713cdaf9ef69738ea55 GIT binary patch literal 37534 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 literal 0 HcmV?d00001 diff --git a/behaviors/custom/Stop/best_model.zip.pkl b/behaviors/custom/Stop/best_model.zip.pkl new file mode 100644 index 0000000000000000000000000000000000000000..75080f87224ff3d6844780dc90b4d0006dee1b5a GIT binary patch literal 37534 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 R_ None: + + self.world = base_agent.world + self.ik = base_agent.inv_kinematics + + # State space + self.obs = np.zeros(63, np.float32) + + # Step behavior defaults + self.STEP_DUR = 8 + self.STEP_Z_SPAN = 0.02 + self.STEP_Z_MAX = 0.70 + + # IK + nao_specs = self.ik.NAO_SPECS + self.leg_length = nao_specs[1] + nao_specs[3] # upper leg height + lower leg height + feet_y_dev = nao_specs[0] * 1.12 # wider step + sample_time = self.world.robot.STEPTIME + max_ankle_z = nao_specs[5] + + self.step_generator = Step_Generator(feet_y_dev, sample_time, max_ankle_z) + self.DEFAULT_ARMS = np.array([-90,-90,8,8,90,90,70,70],np.float32) + + self.walk_rel_orientation = None + self.walk_rel_target = None + self.walk_distance = None + + + def observe(self, init=False): + + r = self.world.robot + + if init: # reset variables + self.act = np.zeros(16, np.float32) # memory variable + self.step_counter = 0 + + # index observation naive normalization + self.obs[0] = min(self.step_counter,15*8) /100 # simple counter: 0,1,2,3... + self.obs[1] = r.loc_head_z *3 # z coordinate (torso) + self.obs[2] = r.loc_head_z_vel /2 # z velocity (torso) + self.obs[3] = r.imu_torso_roll /15 # absolute torso roll in deg + self.obs[4] = r.imu_torso_pitch /15 # absolute torso pitch in deg + self.obs[5:8] = r.gyro /100 # gyroscope + self.obs[8:11] = r.acc /10 # accelerometer + + self.obs[11:17] = r.frp.get('lf', np.zeros(6)) * (10,10,10,0.01,0.01,0.01) # left foot: relative point of origin (p) and force vector (f) -> (px,py,pz,fx,fy,fz)* + self.obs[17:23] = r.frp.get('rf', np.zeros(6)) * (10,10,10,0.01,0.01,0.01) # right foot: relative point of origin (p) and force vector (f) -> (px,py,pz,fx,fy,fz)* + # *if foot is not touching the ground, then (px=0,py=0,pz=0,fx=0,fy=0,fz=0) + + # Joints: Forward kinematics for ankles + feet rotation + arms (pitch + roll) + rel_lankle = self.ik.get_body_part_pos_relative_to_hip("lankle") # ankle position relative to center of both hip joints + rel_rankle = self.ik.get_body_part_pos_relative_to_hip("rankle") # ankle position relative to center of both hip joints + lf = r.head_to_body_part_transform("torso", r.body_parts['lfoot'].transform ) # foot transform relative to torso + rf = r.head_to_body_part_transform("torso", r.body_parts['rfoot'].transform ) # foot transform relative to torso + lf_rot_rel_torso = np.array( [lf.get_roll_deg(), lf.get_pitch_deg(), lf.get_yaw_deg()] ) # foot rotation relative to torso + rf_rot_rel_torso = np.array( [rf.get_roll_deg(), rf.get_pitch_deg(), rf.get_yaw_deg()] ) # foot rotation relative to torso + + # pose + self.obs[23:26] = rel_lankle * (8,8,5) + self.obs[26:29] = rel_rankle * (8,8,5) + self.obs[29:32] = lf_rot_rel_torso / 20 + self.obs[32:35] = rf_rot_rel_torso / 20 + self.obs[35:39] = r.joints_position[14:18] /100 # arms (pitch + roll) + + # velocity + self.obs[39:55] = r.joints_target_last_speed[2:18] # predictions == last action + + ''' + Expected observations for walking state: + Time step R 0 1 2 3 4 5 6 7 0 + Progress 1 0 .14 .28 .43 .57 .71 .86 1 0 + Left leg active T F F F F F F F F T + ''' + + if init: # the walking parameters refer to the last parameters in effect (after a reset, they are pointless) + self.obs[55] = 1 # step progress + self.obs[56] = 1 # 1 if left leg is active + self.obs[57] = 0 # 1 if right leg is active + else: + self.obs[55] = self.step_generator.external_progress # step progress + self.obs[56] = float(self.step_generator.state_is_left_active) # 1 if left leg is active + self.obs[57] = float(not self.step_generator.state_is_left_active) # 1 if right leg is active + + ''' + Create internal target with a smoother variation + ''' + + MAX_LINEAR_DIST = 0.5 + MAX_LINEAR_DIFF = 0.014 # max difference (meters) per step + MAX_ROTATION_DIFF = 1.6 # max difference (degrees) per step + MAX_ROTATION_DIST = 45 + + + if init: + self.internal_rel_orientation = 0 + self.internal_target = np.zeros(2) + + previous_internal_target = np.copy(self.internal_target) + + #---------------------------------------------------------------- compute internal linear target + + rel_raw_target_size = np.linalg.norm(self.walk_rel_target) + + if rel_raw_target_size == 0: + rel_target = self.walk_rel_target + else: + rel_target = self.walk_rel_target / rel_raw_target_size * min(self.walk_distance, MAX_LINEAR_DIST) + + internal_diff = rel_target - self.internal_target + internal_diff_size = np.linalg.norm(internal_diff) + + if internal_diff_size > MAX_LINEAR_DIFF: + self.internal_target += internal_diff * (MAX_LINEAR_DIFF / internal_diff_size) + else: + self.internal_target[:] = rel_target + + #---------------------------------------------------------------- compute internal rotation target + + internal_ori_diff = np.clip( M.normalize_deg( self.walk_rel_orientation - self.internal_rel_orientation ), -MAX_ROTATION_DIFF, MAX_ROTATION_DIFF) + self.internal_rel_orientation = np.clip(M.normalize_deg( self.internal_rel_orientation + internal_ori_diff ), -MAX_ROTATION_DIST, MAX_ROTATION_DIST) + + #----------------------------------------------------------------- observations + + internal_target_vel = self.internal_target - previous_internal_target + + self.obs[58] = self.internal_target[0] / MAX_LINEAR_DIST + self.obs[59] = self.internal_target[1] / MAX_LINEAR_DIST + self.obs[60] = self.internal_rel_orientation / MAX_ROTATION_DIST + self.obs[61] = internal_target_vel[0] / MAX_LINEAR_DIFF + self.obs[62] = internal_target_vel[0] / MAX_LINEAR_DIFF + + return self.obs + + + def execute_ik(self, l_pos, l_rot, r_pos, r_rot): + r = self.world.robot + # Apply IK to each leg + Set joint targets + + # Left leg + indices, self.values_l, error_codes = self.ik.leg(l_pos, l_rot, True, dynamic_pose=False) + + r.set_joints_target_position_direct(indices, self.values_l, harmonize=False) + + # Right leg + indices, self.values_r, error_codes = self.ik.leg(r_pos, r_rot, False, dynamic_pose=False) + + r.set_joints_target_position_direct(indices, self.values_r, harmonize=False) + + + def execute(self, action): + + r = self.world.robot + + # Actions: + # 0,1,2 left ankle pos + # 3,4,5 right ankle pos + # 6,7,8 left foot rotation + # 9,10,11 right foot rotation + # 12,13 left/right arm pitch + # 14,15 left/right arm roll + + internal_dist = np.linalg.norm( self.internal_target ) + action_mult = 1 if internal_dist > 0.2 else (0.7/0.2) * internal_dist + 0.3 + # exponential moving average + self.act = 0.8 * self.act + 0.2 * action * action_mult * 0.7 + + # execute Step behavior to extract the target positions of each leg (we will override these targets) + lfy,lfz,rfy,rfz = self.step_generator.get_target_positions(self.step_counter == 0, self.STEP_DUR, self.STEP_Z_SPAN, self.leg_length * self.STEP_Z_MAX) + + + # Leg IK + a = self.act + l_ankle_pos = (a[0]*0.02, max(0.01, a[1]*0.02 + lfy), a[2]*0.01 + lfz) # limit y to avoid self collision + r_ankle_pos = (a[3]*0.02, min(a[4]*0.02 + rfy, -0.01), a[5]*0.01 + rfz) # limit y to avoid self collision + l_foot_rot = a[6:9] * (3,3,5) + r_foot_rot = a[9:12] * (3,3,5) + + # Limit leg yaw/pitch + l_foot_rot[2] = max(0,l_foot_rot[2] + 7) + r_foot_rot[2] = min(0,r_foot_rot[2] - 7) + + # Arms actions + arms = np.copy(self.DEFAULT_ARMS) # default arms pose + arm_swing = math.sin(self.step_generator.state_current_ts / self.STEP_DUR * math.pi) * 6 + inv = 1 if self.step_generator.state_is_left_active else -1 + arms[0:4] += a[12:16]*4 + (-arm_swing*inv,arm_swing*inv,0,0) # arms pitch+roll + + # Set target positions + self.execute_ik(l_ankle_pos, l_foot_rot, r_ankle_pos, r_foot_rot) # legs + r.set_joints_target_position_direct( slice(14,22), arms, harmonize=False ) # arms + + self.step_counter += 1 \ No newline at end of file diff --git a/behaviors/custom/Walk/Walk.py b/behaviors/custom/Walk/Walk.py new file mode 100644 index 0000000..f435dca --- /dev/null +++ b/behaviors/custom/Walk/Walk.py @@ -0,0 +1,83 @@ +from agent.Base_Agent import Base_Agent +from behaviors.custom.Walk.Env import Env +from math_ops.Math_Ops import Math_Ops as M +from math_ops.Neural_Network import run_mlp +import numpy as np +import pickle + +class Walk(): + + def __init__(self, base_agent : Base_Agent) -> None: + self.world = base_agent.world + self.description = "Omnidirectional RL walk" + self.auto_head = True + self.env = Env(base_agent) + self.last_executed = 0 + + with open(M.get_active_directory([ + "/behaviors/custom/Walk/walk_R0.pkl", + "/behaviors/custom/Walk/walk_R1_R3.pkl", + "/behaviors/custom/Walk/walk_R2.pkl", + "/behaviors/custom/Walk/walk_R1_R3.pkl", + "/behaviors/custom/Walk/walk_R4.pkl" + ][self.world.robot.type]), 'rb') as f: + self.model = pickle.load(f) + + + def execute(self, reset, target_2d, is_target_absolute, orientation, is_orientation_absolute, distance): + ''' + Parameters + ---------- + target_2d : array_like + 2D target in absolute or relative coordinates (use is_target_absolute to specify) + is_target_absolute : bool + True if target_2d is in absolute coordinates, False if relative to robot's torso + orientation : float + absolute or relative orientation of torso, in degrees + set to None to go towards the target (is_orientation_absolute is ignored) + is_orientation_absolute : bool + True if orientation is relative to the field, False if relative to the robot's torso + distance : float + distance to final target [0,0.5] (influences walk speed when approaching the final target) + set to None to consider target_2d the final target + ''' + r = self.world.robot + + #------------------------ 0. Override reset (since some behaviors use this as a sub-behavior) + if reset and self.world.time_local_ms - self.last_executed == 20: + reset = False + self.last_executed = self.world.time_local_ms + + #------------------------ 1. Define walk parameters + + if is_target_absolute: # convert to target relative to (head position + torso orientation) + raw_target = target_2d - r.loc_head_position[:2] + self.env.walk_rel_target = M.rotate_2d_vec(raw_target, -r.imu_torso_orientation) + else: + self.env.walk_rel_target = target_2d + + if distance is None: + self.env.walk_distance = np.linalg.norm(self.env.walk_rel_target) + else: + self.env.walk_distance = distance # MAX_LINEAR_DIST = 0.5 + + # Relative orientation values are decreased to avoid overshoot + if orientation is None: + self.env.walk_rel_orientation = M.vector_angle(self.env.walk_rel_target) * 0.3 + elif is_orientation_absolute: + self.env.walk_rel_orientation = M.normalize_deg( orientation - r.imu_torso_orientation ) + else: + self.env.walk_rel_orientation = orientation * 0.3 + + #------------------------ 2. Execute behavior + + obs = self.env.observe(reset) + action = run_mlp(obs, self.model) + self.env.execute(action) + + return False + + + def is_ready(self): + ''' Returns True if Walk Behavior is ready to start under current game/robot conditions ''' + return True diff --git a/behaviors/custom/Walk/__pycache__/Env.cpython-313.pyc b/behaviors/custom/Walk/__pycache__/Env.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..baa0031199ea4edc872a44b2e728cee2c8926b01 GIT binary patch literal 10665 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 Xe@)qbO_l!1ctoeE`vZkgY~lX^W`RvU literal 0 HcmV?d00001 diff --git a/behaviors/custom/Walk/__pycache__/Walk.cpython-313.pyc b/behaviors/custom/Walk/__pycache__/Walk.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..83beeaa5bef93983d35a151ca29fd1c0b69ea5e0 GIT binary patch literal 4347 zcma(UO>+~;wMSo;Wy!`L0-FzeFsrpiWQz||p;!o6<7Fuu>_tMgUW@GPNNULgqZy@V zWXHZNr^Hlk1yTtWHaW1n7i#ygA*Ya2K7Ij;Ny*h~QdA`uZVui+)t>U+NHa1-hP37G z*VFIy`|9`l^=2p(Akacz1e8-DLjH*pyLsxs<}3iWNRlLlDKaTAK}6U!<(hOew*|YW zJdD^7Pc$gRYGhea=`j#X}S@1+#x#xXZz52uty<O*Qm!^~^rq`^P6 zmTtG9#10#3jDsXjlAepex0!5-t_G$JC3ImX6ROmH`V~EIIEE8?#-bJ0MIo_6|MwTfh)Pc9kWmA{tshnfzYVM}m0uQOOVM_ET zG+Q=lj(hYH)wpnh_Y|lp$)NlKm1<_t*%J3MJ)@i4V=k2__m!0FRh4p&s>?a-^&*XDb?!gyeh%F=vKAhwh9i}5WX1DIU~SLXiszxfcdc(9OxxGH zcivq7&?Hc}D*YH!~JJ`MvBpuy1u3W!TZSSwN_gC8wRN4>x zJLEeU*(AR1H(_}=_HD@5J_69;BkO$wclP{d&u15Z+rKjL$>j46Sa?pLdxqV2Mi4~$ z%Za_?1Ma^L1ja{NvQF&50=mJ9>W9!nR5y?MO9F$m~!8v)fAzGoyzfN6nu`w^=QLhI*+D zlG&dnoSf5GJm|zTSgc7VQd@1@nH{s@t1(i(>={DRP9{n?S;pRjkVIbtwxQ;nn`OC1 zR%$AVlc_+~k6w+D@?=ketPPv(wWVo{kO!OE^aI&t3Awx9bM$`j3Q=pguQFRTp z%R`T}(49XTL!)uW3LB1{Z@+aEHFrz}1L*cOT zRwq7r*Z)QjZ`;ab*EZ*l`yE*Y#sf@Vv~_cX9NdQ$7PzDh*kah%8|z2e4x=nVtIDYh zh|(IfP_tem8-pa&d1LbWWHq?A65P8YJoAxY=gmvMp8LgIH9S%YkKFTA4~;C=+k&~6alPi1{#+$CXOl($5qbmhX1sWC zv4oqyK3^;0ZkJcvBP;Ip&feSIcdmSTWwkT9;#>0vZ}_kKtNz}KzxVdehko&KN6#i0 zm}J4gPD2>Wn@y~IZjpizbuC{?ST8g~w6iAqNF1*}2Wojj&MjeamacP}!D|F$-3B|Jp%%OM=ND|cRWfkF|B>lK7tM!!*Ny;nCFd^)y zrb`k-?b!f!cp%viq2pmm0?kY%E6JwGlnh)>2B4ls1eB$AfU)>v*x|n+Liba$;c52{ ze>S;6V7NE-Ee=lyk9x!ZQ3aQ`r$&tE(GcHZy@y8|&vQ!@-sil#Mr-e`Q7c5?-Cldv zbQbaHu9u8a`wh>~P_=Bd%UPVJWd`YMnws!bx@u(u?$yf0(h|dKong&q3ICE-+<&rW txgW6efP%g73_T*zN923(`-XIVLqg9zQ-aX*lwfaZ_g`qe`+NWZ literal 0 HcmV?d00001 diff --git a/behaviors/custom/Walk/walk_R0.pkl b/behaviors/custom/Walk/walk_R0.pkl new file mode 100644 index 0000000000000000000000000000000000000000..ac7ec3eac41b6fce003f7bc25940063b449d7779 GIT binary patch literal 20820 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[cYA(CYxsWaGjKmn* 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 literal 0 HcmV?d00001 diff --git a/behaviors/custom/Walk/walk_R1_R3.pkl b/behaviors/custom/Walk/walk_R1_R3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5e56c0ec9fa07ac65c15eef728356c8e17dab47b GIT binary patch literal 20820 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 ZfZ=Mh1|>Td{$DR5C^*RHw2zO`{{V_xvOE9) literal 0 HcmV?d00001 diff --git a/behaviors/custom/Walk/walk_R4.pkl b/behaviors/custom/Walk/walk_R4.pkl new file mode 100644 index 0000000000000000000000000000000000000000..2d86dbc27c9fd65f19e40603439d351e6510d8ca GIT binary patch literal 20820 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 bo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/behaviors/slot/common/Dive_Right.xml b/behaviors/slot/common/Dive_Right.xml new file mode 100644 index 0000000..4078aea --- /dev/null +++ b/behaviors/slot/common/Dive_Right.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/behaviors/slot/common/Flip.xml b/behaviors/slot/common/Flip.xml new file mode 100644 index 0000000..776fa80 --- /dev/null +++ b/behaviors/slot/common/Flip.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/behaviors/slot/common/Squat.xml b/behaviors/slot/common/Squat.xml new file mode 100644 index 0000000..d8893b0 --- /dev/null +++ b/behaviors/slot/common/Squat.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/behaviors/slot/r0/Get_Up_Back.xml b/behaviors/slot/r0/Get_Up_Back.xml new file mode 100644 index 0000000..329871e --- /dev/null +++ b/behaviors/slot/r0/Get_Up_Back.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/behaviors/slot/r0/Get_Up_Front.xml b/behaviors/slot/r0/Get_Up_Front.xml new file mode 100644 index 0000000..f3203c1 --- /dev/null +++ b/behaviors/slot/r0/Get_Up_Front.xml @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/behaviors/slot/r0/Kick_Motion.xml b/behaviors/slot/r0/Kick_Motion.xml new file mode 100644 index 0000000..931d8c0 --- /dev/null +++ b/behaviors/slot/r0/Kick_Motion.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/behaviors/slot/r1/Get_Up_Back.xml b/behaviors/slot/r1/Get_Up_Back.xml new file mode 100644 index 0000000..0f0243f --- /dev/null +++ b/behaviors/slot/r1/Get_Up_Back.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/behaviors/slot/r1/Get_Up_Front.xml b/behaviors/slot/r1/Get_Up_Front.xml new file mode 100644 index 0000000..f2d9ac1 --- /dev/null +++ b/behaviors/slot/r1/Get_Up_Front.xml @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/behaviors/slot/r1/Kick_Motion.xml b/behaviors/slot/r1/Kick_Motion.xml new file mode 100644 index 0000000..7dec17f --- /dev/null +++ b/behaviors/slot/r1/Kick_Motion.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/behaviors/slot/r2/Get_Up_Back.xml b/behaviors/slot/r2/Get_Up_Back.xml new file mode 100644 index 0000000..b3602ce --- /dev/null +++ b/behaviors/slot/r2/Get_Up_Back.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/behaviors/slot/r2/Get_Up_Front.xml b/behaviors/slot/r2/Get_Up_Front.xml new file mode 100644 index 0000000..2c0c096 --- /dev/null +++ b/behaviors/slot/r2/Get_Up_Front.xml @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/behaviors/slot/r2/Kick_Motion.xml b/behaviors/slot/r2/Kick_Motion.xml new file mode 100644 index 0000000..8ce996c --- /dev/null +++ b/behaviors/slot/r2/Kick_Motion.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/behaviors/slot/r3/Get_Up_Back.xml b/behaviors/slot/r3/Get_Up_Back.xml new file mode 100644 index 0000000..1ea2a3f --- /dev/null +++ b/behaviors/slot/r3/Get_Up_Back.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/behaviors/slot/r3/Get_Up_Front.xml b/behaviors/slot/r3/Get_Up_Front.xml new file mode 100644 index 0000000..14b73a4 --- /dev/null +++ b/behaviors/slot/r3/Get_Up_Front.xml @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/behaviors/slot/r3/Kick_Motion.xml b/behaviors/slot/r3/Kick_Motion.xml new file mode 100644 index 0000000..17b0846 --- /dev/null +++ b/behaviors/slot/r3/Kick_Motion.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/behaviors/slot/r4/Get_Up_Back.xml b/behaviors/slot/r4/Get_Up_Back.xml new file mode 100644 index 0000000..0c36704 --- /dev/null +++ b/behaviors/slot/r4/Get_Up_Back.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/behaviors/slot/r4/Get_Up_Front.xml b/behaviors/slot/r4/Get_Up_Front.xml new file mode 100644 index 0000000..2c0c096 --- /dev/null +++ b/behaviors/slot/r4/Get_Up_Front.xml @@ -0,0 +1,220 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/behaviors/slot/r4/Kick_Motion.xml b/behaviors/slot/r4/Kick_Motion.xml new file mode 100644 index 0000000..0850ac4 --- /dev/null +++ b/behaviors/slot/r4/Kick_Motion.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/bundle.sh b/bundle.sh new file mode 100755 index 0000000..c57f1cd --- /dev/null +++ b/bundle.sh @@ -0,0 +1,83 @@ +#!/bin/bash + +# Call this script from any directory +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" + +# cd to main folder +cd "${SCRIPT_DIR}/.." + +rm -rf ./bundle/build +rm -rf ./bundle/dist + +onefile="--onefile" + +# bundle app, dependencies and data files into single executable + +pyinstaller \ +--add-data './world/commons/robots:world/commons/robots' \ +--add-data './behaviors/slot/common:behaviors/slot/common' \ +--add-data './behaviors/slot/r0:behaviors/slot/r0' \ +--add-data './behaviors/slot/r1:behaviors/slot/r1' \ +--add-data './behaviors/slot/r2:behaviors/slot/r2' \ +--add-data './behaviors/slot/r3:behaviors/slot/r3' \ +--add-data './behaviors/slot/r4:behaviors/slot/r4' \ +--add-data './behaviors/custom/Dribble/*.pkl:behaviors/custom/Dribble' \ +--add-data './behaviors/custom/Walk/*.pkl:behaviors/custom/Walk' \ +--add-data './behaviors/custom/Fall/*.pkl:behaviors/custom/Fall' \ +${onefile} --distpath ./bundle/dist/ --workpath ./bundle/build/ --noconfirm --name fcp Run_Player.py + +# start.sh + +cat > ./bundle/dist/start.sh << EOF +#!/bin/bash +export OMP_NUM_THREADS=1 + +host=\${1:-localhost} +port=\${2:-3100} + +for i in {1..11}; do + ./fcp -i \$host -p \$port -u \$i -t FCPortugal & +done +EOF + +# start_penalty.sh + +cat > ./bundle/dist/start_penalty.sh << EOF +#!/bin/bash +export OMP_NUM_THREADS=1 + +host=\${1:-localhost} +port=\${2:-3100} + +./fcp -i \$host -p \$port -u 1 -t FCPortugal -P 1 & +./fcp -i \$host -p \$port -u 11 -t FCPortugal -P 1 & +EOF + +# start_fat_proxy.sh + +cat > ./bundle/dist/start_fat_proxy.sh << EOF +#!/bin/bash +export OMP_NUM_THREADS=1 + +host=\${1:-localhost} +port=\${2:-3100} + +for i in {1..11}; do + ./fcp -i \$host -p \$port -u \$i -t FCPortugal -F 1 & +done +EOF + +# kill.sh + +cat > ./bundle/dist/kill.sh << EOF +#!/bin/bash +pkill -9 -e fcp +EOF + +# execution permission + +chmod a+x ./bundle/dist/start.sh +chmod a+x ./bundle/dist/start_penalty.sh +chmod a+x ./bundle/dist/start_fat_proxy.sh +chmod a+x ./bundle/dist/kill.sh + diff --git a/bundle/bundle.sh b/bundle/bundle.sh new file mode 100755 index 0000000..c57f1cd --- /dev/null +++ b/bundle/bundle.sh @@ -0,0 +1,83 @@ +#!/bin/bash + +# Call this script from any directory +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" + +# cd to main folder +cd "${SCRIPT_DIR}/.." + +rm -rf ./bundle/build +rm -rf ./bundle/dist + +onefile="--onefile" + +# bundle app, dependencies and data files into single executable + +pyinstaller \ +--add-data './world/commons/robots:world/commons/robots' \ +--add-data './behaviors/slot/common:behaviors/slot/common' \ +--add-data './behaviors/slot/r0:behaviors/slot/r0' \ +--add-data './behaviors/slot/r1:behaviors/slot/r1' \ +--add-data './behaviors/slot/r2:behaviors/slot/r2' \ +--add-data './behaviors/slot/r3:behaviors/slot/r3' \ +--add-data './behaviors/slot/r4:behaviors/slot/r4' \ +--add-data './behaviors/custom/Dribble/*.pkl:behaviors/custom/Dribble' \ +--add-data './behaviors/custom/Walk/*.pkl:behaviors/custom/Walk' \ +--add-data './behaviors/custom/Fall/*.pkl:behaviors/custom/Fall' \ +${onefile} --distpath ./bundle/dist/ --workpath ./bundle/build/ --noconfirm --name fcp Run_Player.py + +# start.sh + +cat > ./bundle/dist/start.sh << EOF +#!/bin/bash +export OMP_NUM_THREADS=1 + +host=\${1:-localhost} +port=\${2:-3100} + +for i in {1..11}; do + ./fcp -i \$host -p \$port -u \$i -t FCPortugal & +done +EOF + +# start_penalty.sh + +cat > ./bundle/dist/start_penalty.sh << EOF +#!/bin/bash +export OMP_NUM_THREADS=1 + +host=\${1:-localhost} +port=\${2:-3100} + +./fcp -i \$host -p \$port -u 1 -t FCPortugal -P 1 & +./fcp -i \$host -p \$port -u 11 -t FCPortugal -P 1 & +EOF + +# start_fat_proxy.sh + +cat > ./bundle/dist/start_fat_proxy.sh << EOF +#!/bin/bash +export OMP_NUM_THREADS=1 + +host=\${1:-localhost} +port=\${2:-3100} + +for i in {1..11}; do + ./fcp -i \$host -p \$port -u \$i -t FCPortugal -F 1 & +done +EOF + +# kill.sh + +cat > ./bundle/dist/kill.sh << EOF +#!/bin/bash +pkill -9 -e fcp +EOF + +# execution permission + +chmod a+x ./bundle/dist/start.sh +chmod a+x ./bundle/dist/start_penalty.sh +chmod a+x ./bundle/dist/start_fat_proxy.sh +chmod a+x ./bundle/dist/kill.sh + diff --git a/communication/Radio.py b/communication/Radio.py new file mode 100644 index 0000000..83adaf6 --- /dev/null +++ b/communication/Radio.py @@ -0,0 +1,306 @@ +from typing import List +from world.commons.Other_Robot import Other_Robot +from world.World import World +import numpy as np + +class Radio(): + ''' + map limits are hardcoded: + teammates/opponents positions (x,y) in ([-16,16],[-11,11]) + ball position (x,y) in ([-15,15],[-10,10]) + known server limitations: + claimed: all ascii from 0x20 to 0x7E except ' ', '(', ')' + bugs: + - ' or " clip the message + - '\' at the end or near another '\' + - ';' at beginning of message + ''' + # map limits are hardcoded: + + # lines, columns, half lines index, half cols index, (lines-1)/x_span, (cols-1)/y_span, combinations, combinations*2states, + TP = 321,221,160,110,10, 10,70941,141882 # teammate position + OP = 201,111,100,55, 6.25,5, 22311,44622 # opponent position + BP = 301,201,150,100,10, 10,60501 # ball position + SYMB = "!#$%&*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~;" + SLEN = len(SYMB) + SYMB_TO_IDX = {ord(s):i for i,s in enumerate(SYMB)} + + + def __init__(self, world : World, commit_announcement) -> None: + self.world = world + self.commit_announcement = commit_announcement + r = world.robot + t = world.teammates + o = world.opponents + self.groups = ( # player team/unum, group has ball?, self in group? + [(t[9],t[10],o[6],o[7],o[8],o[9],o[10]), True ], # 2 teammates, 5 opponents, ball + [(t[0],t[1], t[2],t[3],t[4],t[5],t[6] ), False], # 7 teammates + [(t[7],t[8], o[0],o[1],o[2],o[3],o[4],o[5]), False] # 2 teammates, 6 opponents + ) + for g in self.groups: # add 'self in group?' + g.append(any(i.is_self for i in g[0])) + + def get_player_combination(self, pos, is_unknown, is_down, info): + ''' Returns combination (0-based) and number of possible combinations ''' + + if is_unknown: + return info[7]+1, info[7]+2 # return unknown combination + + x,y = pos[:2] + + if x < -17 or x > 17 or y < -12 or y > 12: + return info[7], info[7]+2 # return out of bounds combination (if it exceeds 1m in any axis) + + # convert to int to avoid overflow later + l = int(np.clip( round(info[4]*x+info[2]), 0, info[0]-1 )) # absorb out of bounds positions (up to 1m in each axis) + c = int(np.clip( round(info[5]*y+info[3]), 0, info[1]-1 )) + + return (l*info[1]+c)+(info[6] if is_down else 0), info[7]+2 # return valid combination + + + def get_ball_combination(self, x, y): + ''' Returns combination (0-based) and number of possible combinations ''' + + # if ball is out of bounds, we force it in + l = int(np.clip( round(Radio.BP[4]*x+Radio.BP[2]), 0, Radio.BP[0]-1 )) + c = int(np.clip( round(Radio.BP[5]*y+Radio.BP[3]), 0, Radio.BP[1]-1 )) + + return l*Radio.BP[1]+c, Radio.BP[6] # return valid combination + + def get_ball_position(self,comb): + + l = comb // Radio.BP[1] + c = comb % Radio.BP[1] + + return np.array([l/Radio.BP[4]-15, c/Radio.BP[5]-10, 0.042]) # assume ball is on ground + + def get_player_position(self,comb, info): + + if comb == info[7]: return -1 # player is out of bounds + if comb == info[7]+1: return -2 # player is in unknown location + + is_down = comb >= info[6] + if is_down: + comb -= info[6] + + l = comb // info[1] + c = comb % info[1] + + return l/info[4]-16, c/info[5]-11, is_down + + + def check_broadcast_requirements(self): + ''' + Check if broadcast group is valid + + Returns + ------- + ready : bool + True if all requirements are met + + Sequence: g0,g1,g2, ig0,ig1,ig2, iig0,iig1,iig2 (whole cycle: 0.36s) + igx means 'incomplete group', where <=1 element can be MIA recently + iigx means 'very incomplete group', where <=2 elements can be MIA recently + Rationale: prevent incomplete messages from monopolizing the broadcast space + + However: + - 1st round: when 0 group members are missing, that group will update 3 times every 0.36s + - 2nd round: when 1 group member is recently missing, that group will update 2 times every 0.36s + - 3rd round: when 2 group members are recently missing, that group will update 1 time every 0.36s + - when >2 group members are recently missing, that group will not be updated + + Players that have never been seen or heard are not considered for the 'recently missing'. + If there is only 1 group member since the beginning, the respective group can be updated, except in the 1st round. + In this way, the 1st round cannot be monopolized by clueless agents, which is important during games with 22 players. + ''' + + w = self.world + r = w.robot + ago40ms = w.time_local_ms - 40 + ago370ms = w.time_local_ms - 370 # maximum delay (up to 2 MIAs) is 360ms because radio has a delay of 20ms (otherwise max delay would be 340ms) + group : List[Other_Robot] + + idx9 = int((w.time_server * 25)+0.1) % 9 # sequence of 9 phases + max_MIA = idx9 // 3 # maximum number of MIA players (based on server time) + group_idx = idx9 % 3 # group number (based on server time) + group, has_ball, is_self_included = self.groups[group_idx] + + #============================================ 0. check if group is valid + + if has_ball and w.ball_abs_pos_last_update < ago40ms: # Ball is included and not up to date + return False + + if is_self_included and r.loc_last_update < ago40ms: # Oneself is included and unable to self-locate + return False + + # Get players that have been previously seen or heard but not recently + MIAs = [not ot.is_self and ot.state_last_update < ago370ms and ot.state_last_update > 0 for ot in group] + self.MIAs = [ot.state_last_update == 0 or MIAs[i] for i,ot in enumerate(group)] # add players that have never been seen + + if sum(MIAs) > max_MIA: # checking if number of recently missing members is not above threshold + return False + + # never seen before players are always ignored except when: + # - this is the 0 MIAs round (see explanation above) + # - all are MIA + if (max_MIA == 0 and any(self.MIAs)) or all(self.MIAs): + return False + + # Check for invalid members. Conditions: + # - Player is other and not MIA and: + # - last update was >40ms ago OR + # - last update did not include the head (head is important to provide state and accurate position) + + if any( + (not ot.is_self and not self.MIAs[i] and + (ot.state_last_update < ago40ms or ot.state_last_update==0 or len(ot.state_abs_pos)<3)# (last update: has no head or is old) + ) for i,ot in enumerate(group) + ): + return False + + return True + + + def broadcast(self): + ''' + Commit messages to teammates if certain conditions are met + Messages contain: positions/states of every moving entity + ''' + + if not self.check_broadcast_requirements(): + return + + w = self.world + ot : Other_Robot + + group_idx = int((w.time_server * 25)+0.1) % 3 # group number based on server time + group, has_ball, _ = self.groups[group_idx] + + #============================================ 1. create combination + + # add message number + combination = group_idx + no_of_combinations = 3 + + # add ball combination + if has_ball: + c, n = self.get_ball_combination(w.ball_abs_pos[0], w.ball_abs_pos[1]) + combination += c * no_of_combinations + no_of_combinations *= n + + + # add group combinations + for i,ot in enumerate(group): + c, n = self.get_player_combination(ot.state_abs_pos, # player position + self.MIAs[i], ot.state_fallen, # is unknown, is down + Radio.TP if ot.is_teammate else Radio.OP) # is teammate + combination += c * no_of_combinations + no_of_combinations *= n + + + assert(no_of_combinations < 9.61e38) # 88*89^19 (first character cannot be ';') + + #============================================ 2. create message + + # 1st msg symbol: ignore ';' due to server bug + msg = Radio.SYMB[combination % (Radio.SLEN-1)] + combination //= (Radio.SLEN-1) + + # following msg symbols + while combination: + msg += Radio.SYMB[combination % Radio.SLEN] + combination //= Radio.SLEN + + #============================================ 3. commit message + + self.commit_announcement(msg.encode()) # commit message + + + def receive(self, msg:bytearray): + w = self.world + r = w.robot + ago40ms = w.time_local_ms - 40 + ago110ms = w.time_local_ms - 110 + msg_time = w.time_local_ms - 20 # message was sent in the last step + + #============================================ 1. get combination + + # read first symbol, which cannot be ';' due to server bug + combination = Radio.SYMB_TO_IDX[msg[0]] + total_combinations = Radio.SLEN-1 + + if len(msg)>1: + for m in msg[1:]: + combination += total_combinations * Radio.SYMB_TO_IDX[m] + total_combinations *= Radio.SLEN + + #============================================ 2. get msg ID + + message_no = combination % 3 + combination //= 3 + group, has_ball, _ = self.groups[message_no] + + #============================================ 3. get data + + if has_ball: + ball_comb = combination % Radio.BP[6] + combination //= Radio.BP[6] + + players_combs = [] + ot : Other_Robot + for ot in group: + info = Radio.TP if ot.is_teammate else Radio.OP + players_combs.append( combination % (info[7]+2) ) + combination //= info[7]+2 + + #============================================ 4. update world + + if has_ball and w.ball_abs_pos_last_update < ago40ms: # update ball if it was not seen + time_diff = (msg_time - w.ball_abs_pos_last_update) / 1000 + ball = self.get_ball_position(ball_comb) + w.ball_abs_vel = (ball - w.ball_abs_pos) / time_diff + w.ball_abs_speed = np.linalg.norm(w.ball_abs_vel) + w.ball_abs_pos_last_update = msg_time # (error: 0-40 ms) + w.ball_abs_pos = ball + w.is_ball_abs_pos_from_vision = False + + for c, ot in zip(players_combs, group): + + # handle oneself case + if ot.is_self: + # the ball's position has a fair amount of noise, whether seen by us or other players + # but our self-locatization mechanism is usually much better than how others perceive us + if r.loc_last_update < ago110ms: # so we wait until we miss 2 visual steps + data = self.get_player_position(c, Radio.TP) + if type(data)==tuple: + x,y,is_down = data + r.loc_head_position[:2] = x,y # z is kept unchanged + r.loc_head_position_last_update = msg_time + r.radio_fallen_state = is_down + r.radio_last_update = msg_time + continue + + # do not update if other robot was recently seen + if ot.state_last_update >= ago40ms: + continue + + info = Radio.TP if ot.is_teammate else Radio.OP + data = self.get_player_position(c, info) + if type(data)==tuple: + x,y,is_down = data + p = np.array([x,y]) + + if ot.state_abs_pos is not None: # update the x & y components of the velocity + time_diff = (msg_time - ot.state_last_update) / 1000 + velocity = np.append( (p - ot.state_abs_pos[:2]) / time_diff, 0) # v.z = 0 + vel_diff = velocity - ot.state_filtered_velocity + if np.linalg.norm(vel_diff) < 4: # otherwise assume it was beamed + ot.state_filtered_velocity /= (ot.vel_decay,ot.vel_decay,1) # neutralize decay (except in the z-axis) + ot.state_filtered_velocity += ot.vel_filter * vel_diff + + ot.state_fallen = is_down + ot.state_last_update = msg_time + ot.state_body_parts_abs_pos = {"head":p} + ot.state_abs_pos = p + ot.state_horizontal_dist = np.linalg.norm(p - r.loc_head_position[:2]) + ot.state_ground_area = (p, 0.3 if is_down else 0.2) # not very precise, but we cannot see the robot \ No newline at end of file diff --git a/communication/Server_Comm.py b/communication/Server_Comm.py new file mode 100644 index 0000000..02d8c17 --- /dev/null +++ b/communication/Server_Comm.py @@ -0,0 +1,285 @@ +from communication.World_Parser import World_Parser +from itertools import count +from select import select +from sys import exit +from world.World import World +import socket +import time + +class Server_Comm(): + monitor_socket = None + + def __init__(self, host:str, agent_port:int, monitor_port:int, unum:int, robot_type:int, team_name:str, + world_parser:World_Parser, world:World, other_players, wait_for_server=True) -> None: + + self.BUFFER_SIZE = 8192 + self.rcv_buff = bytearray(self.BUFFER_SIZE) + self.send_buff = [] + self.world_parser = world_parser + self.unum = unum + + # During initialization, it's not clear whether we are on the left or right side + self._unofficial_beam_msg_left = "(agent (unum " + str(unum) + ") (team Left) (move " + self._unofficial_beam_msg_right = "(agent (unum " + str(unum) + ") (team Right) (move " + self.world = world + + self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM ) + + if wait_for_server: print("Waiting for server at ", host, ":", agent_port, sep="",end=".",flush=True) + while True: + try: + self.socket.connect((host, agent_port)) + print(end=" ") + break + except ConnectionRefusedError: + if not wait_for_server: + print("Server is down. Closing...") + exit() + time.sleep(1) + print(".",end="",flush=True) + print("Connected agent", unum, self.socket.getsockname()) + + self.send_immediate(b'(scene rsg/agent/nao/nao_hetero.rsg ' + str(robot_type).encode() + b')') + self._receive_async(other_players, True) + + self.send_immediate(b'(init (unum '+ str(unum).encode() + b') (teamname '+ team_name.encode() + b'))') + self._receive_async(other_players, False) + + # Repeat to guarantee that team side information is received + for _ in range(3): + # Eliminate advanced step by changing syn order (rcssserver3d protocol bug, usually seen for player 11) + self.send_immediate(b'(syn)') #if this syn is not needed, it will be discarded by the server + for p in other_players: + p.scom.send_immediate(b'(syn)') + for p in other_players: + p.scom.receive() + self.receive() + + if world.team_side_is_left == None: + print("\nError: server did not return a team side! Check server terminal!") + exit() + + # Monitor socket is shared by all agents on the same thread + if Server_Comm.monitor_socket is None and monitor_port is not None: + print("Connecting to server's monitor port at ", host, ":", monitor_port, sep="",end=".",flush=True) + Server_Comm.monitor_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM ) + Server_Comm.monitor_socket.connect((host, monitor_port)) + print("Done!") + + + + def _receive_async(self, other_players, first_pass) -> None: + '''Private function that receives asynchronous information during the initialization''' + + if not other_players: + self.receive() + return + + self.socket.setblocking(0) + if first_pass: print("Async agent",self.unum,"initialization", end="", flush=True) + + while True: + try: + print(".",end="",flush=True) + self.receive() + break + except: + pass + for p in other_players: + p.scom.send_immediate(b'(syn)') + for p in other_players: + p.scom.receive() + + self.socket.setblocking(1) + if not first_pass: print("Done!") + + + def receive(self, update=True): + + for i in count(): # parse all messages and perform value updates, but heavy computation is only done once at the end + try: + if self.socket.recv_into(self.rcv_buff, nbytes=4) != 4: raise ConnectionResetError() + msg_size = int.from_bytes(self.rcv_buff[:4], byteorder='big', signed=False) + if self.socket.recv_into(self.rcv_buff, nbytes=msg_size, flags=socket.MSG_WAITALL) != msg_size: raise ConnectionResetError() + except ConnectionResetError: + print("\nError: socket was closed by rcssserver3d!") + exit() + + self.world_parser.parse(self.rcv_buff[:msg_size]) + if len(select([self.socket],[],[], 0.0)[0]) == 0: break + + if update: + if i==1: self.world.log( "Server_Comm.py: The agent lost 1 packet! Is syncmode enabled?") + if i>1: self.world.log(f"Server_Comm.py: The agent lost {i} consecutive packets! Is syncmode disabled?") + self.world.update() + + if len(select([self.socket],[],[], 0.0)[0]) != 0: + self.world.log("Server_Comm.py: Received a new packet while on world.update()!") + self.receive() + + + def send_immediate(self, msg:bytes) -> None: + ''' Commit and send immediately ''' + try: + self.socket.send( (len(msg)).to_bytes(4,byteorder='big') + msg ) #Add message length in the first 4 bytes + except BrokenPipeError: + print("\nError: socket was closed by rcssserver3d!") + exit() + + + def send(self) -> None: + ''' Send all committed messages ''' + if len(select([self.socket],[],[], 0.0)[0]) == 0: + self.send_buff.append(b'(syn)') + self.send_immediate( b''.join(self.send_buff) ) + else: + self.world.log("Server_Comm.py: Received a new packet while thinking!") + self.send_buff = [] #clear buffer + + def commit(self, msg:bytes) -> None: + assert type(msg) == bytes, "Message must be of type Bytes!" + self.send_buff.append(msg) + + def commit_and_send(self, msg:bytes = b'') -> None: + self.commit(msg) + self.send() + + def clear_buffer(self) -> None: + self.send_buff = [] + + def commit_announcement(self, msg:bytes) -> None: + ''' + Say something to every player on the field. + Maximum 20 characters, ascii between 0x20, 0x7E except ' ', '(', ')' + Accepted: letters+numbers+symbols: !"#$%&'*+,-./:;<=>?@[\]^_`{|}~ + Message range: 50m (the field is 36m diagonally, so ignore this limitation) + A player can only hear a teammate's message every 2 steps (0.04s) + This ability exists independetly for messages from both teams + (i.e. our team cannot spam the other team to block their messages) + Messages from oneself are always heard + ''' + assert len(msg) <= 20 and type(msg) == bytes + self.commit(b'(say ' + msg + b')') + + def commit_pass_command(self) -> None: + ''' + Issue a pass command: + Conditions: + - The current playmode is PlayOn + - The agent is near the ball (default 0.5m) + - No opponents are near the ball (default 1m) + - The ball is stationary (default <0.05m/s) + - A certain amount of time has passed between pass commands + ''' + self.commit(b'(pass)') + + def commit_beam(self, pos2d, rot) -> None: + ''' + Official beam command that can be used in-game + This beam is affected by noise (unless it is disabled in the server configuration) + + Parameters + ---------- + pos2d : array_like + Absolute 2D position (negative X is always our half of the field, no matter our side) + rot : `int`/`float` + Player angle in degrees (0 points forward) + ''' + assert len(pos2d)==2, "The official beam command accepts only 2D positions!" + self.commit( f"(beam {pos2d[0]} {pos2d[1]} {rot})".encode() ) + + + def unofficial_beam(self, pos3d, rot) -> None: + ''' + Unofficial beam - it cannot be used in official matches + + Parameters + ---------- + pos3d : array_like + Absolute 3D position (negative X is always our half of the field, no matter our side) + rot : `int`/`float` + Player angle in degrees (0 points forward) + ''' + assert len(pos3d)==3, "The unofficial beam command accepts only 3D positions!" + + # there is no need to normalize the angle, the server accepts any angle + if self.world.team_side_is_left: + msg = f"{self._unofficial_beam_msg_left }{ pos3d[0]} { pos3d[1]} {pos3d[2]} {rot-90}))".encode() + else: + msg = f"{self._unofficial_beam_msg_right}{-pos3d[0]} {-pos3d[1]} {pos3d[2]} {rot+90}))".encode() + + self.monitor_socket.send( (len(msg)).to_bytes(4,byteorder='big') + msg ) + + def unofficial_kill_sim(self) -> None: + ''' Unofficial kill simulator command ''' + msg = b'(killsim)' + self.monitor_socket.send( (len(msg)).to_bytes(4,byteorder='big') + msg ) + + def unofficial_move_ball(self, pos3d, vel3d=(0,0,0)) -> None: + ''' + Unofficial command to move ball + info: ball radius = 0.042m + + Parameters + ---------- + pos3d : array_like + Absolute 3D position (negative X is always our half of the field, no matter our side) + vel3d : array_like + Absolute 3D velocity (negative X is always our half of the field, no matter our side) + ''' + assert len(pos3d)==3 and len(vel3d)==3, "To move the ball we need a 3D position and velocity" + + if self.world.team_side_is_left: + msg = f"(ball (pos { pos3d[0]} { pos3d[1]} {pos3d[2]}) (vel { vel3d[0]} { vel3d[1]} {vel3d[2]}))".encode() + else: + msg = f"(ball (pos {-pos3d[0]} {-pos3d[1]} {pos3d[2]}) (vel {-vel3d[0]} {-vel3d[1]} {vel3d[2]}))".encode() + + self.monitor_socket.send( (len(msg)).to_bytes(4,byteorder='big') + msg ) + + def unofficial_set_game_time(self, time_in_s : float) -> None: + ''' + Unofficial command to set the game time + e.g. unofficial_set_game_time(68.78) + + Parameters + ---------- + time_in_s : float + Game time in seconds + ''' + msg = f"(time {time_in_s})".encode() + self.monitor_socket.send( (len(msg)).to_bytes(4,byteorder='big') + msg ) + + def unofficial_set_play_mode(self, play_mode : str) -> None: + ''' + Unofficial command to set the play mode + e.g. unofficial_set_play_mode("PlayOn") + + Parameters + ---------- + play_mode : str + Play mode + ''' + msg = f"(playMode {play_mode})".encode() + self.monitor_socket.send( (len(msg)).to_bytes(4,byteorder='big') + msg ) + + def unofficial_kill_player(self, unum : int, team_side_is_left : bool) -> None: + ''' + Unofficial command to kill specific player + + Parameters + ---------- + unum : int + Uniform number + team_side_is_left : bool + True if player to kill belongs to left team + ''' + msg = f"(kill (unum {unum}) (team {'Left' if team_side_is_left else 'Right'}))".encode() + self.monitor_socket.send( (len(msg)).to_bytes(4,byteorder='big') + msg ) + + def close(self, close_monitor_socket = False): + ''' Close agent socket, and optionally the monitor socket (shared by players running on the same thread) ''' + self.socket.close() + if close_monitor_socket and Server_Comm.monitor_socket is not None: + Server_Comm.monitor_socket.close() + Server_Comm.monitor_socket = None + diff --git a/communication/World_Parser.py b/communication/World_Parser.py new file mode 100644 index 0000000..5359a3e --- /dev/null +++ b/communication/World_Parser.py @@ -0,0 +1,430 @@ +from math_ops.Math_Ops import Math_Ops as M +from world.Robot import Robot +from world.World import World +import math +import numpy as np + + +class World_Parser(): + def __init__(self, world:World, hear_callback) -> None: + self.LOG_PREFIX = "World_Parser.py: " + self.world = world + self.hear_callback = hear_callback + self.exp = None + self.depth = None + self.LEFT_SIDE_FLAGS = {b'F2L':(-15,-10,0), + b'F1L':(-15,+10,0), + b'F2R':(+15,-10,0), + b'F1R':(+15,+10,0), + b'G2L':(-15,-1.05,0.8), + b'G1L':(-15,+1.05,0.8), + b'G2R':(+15,-1.05,0.8), + b'G1R':(+15,+1.05,0.8)} #mapping between flag names and their corrected location, when playing on the left side + self.RIGHT_SIDE_FLAGS = {b'F2L':(+15,+10,0), + b'F1L':(+15,-10,0), + b'F2R':(-15,+10,0), + b'F1R':(-15,-10,0), + b'G2L':(+15,+1.05,0.8), + b'G1L':(+15,-1.05,0.8), + b'G2R':(-15,+1.05,0.8), + b'G1R':(-15,-1.05,0.8)} + self.play_mode_to_id = None + self.LEFT_PLAY_MODE_TO_ID = {"KickOff_Left":World.M_OUR_KICKOFF, "KickIn_Left":World.M_OUR_KICK_IN, "corner_kick_left":World.M_OUR_CORNER_KICK, + "goal_kick_left":World.M_OUR_GOAL_KICK, "free_kick_left":World.M_OUR_FREE_KICK, "pass_left":World.M_OUR_PASS, + "direct_free_kick_left": World.M_OUR_DIR_FREE_KICK, "Goal_Left": World.M_OUR_GOAL, "offside_left": World.M_OUR_OFFSIDE, + "KickOff_Right":World.M_THEIR_KICKOFF, "KickIn_Right":World.M_THEIR_KICK_IN, "corner_kick_right":World.M_THEIR_CORNER_KICK, + "goal_kick_right":World.M_THEIR_GOAL_KICK, "free_kick_right":World.M_THEIR_FREE_KICK, "pass_right":World.M_THEIR_PASS, + "direct_free_kick_right": World.M_THEIR_DIR_FREE_KICK, "Goal_Right": World.M_THEIR_GOAL, "offside_right": World.M_THEIR_OFFSIDE, + "BeforeKickOff": World.M_BEFORE_KICKOFF, "GameOver": World.M_GAME_OVER, "PlayOn": World.M_PLAY_ON } + self.RIGHT_PLAY_MODE_TO_ID = {"KickOff_Left":World.M_THEIR_KICKOFF, "KickIn_Left":World.M_THEIR_KICK_IN, "corner_kick_left":World.M_THEIR_CORNER_KICK, + "goal_kick_left":World.M_THEIR_GOAL_KICK, "free_kick_left":World.M_THEIR_FREE_KICK, "pass_left":World.M_THEIR_PASS, + "direct_free_kick_left": World.M_THEIR_DIR_FREE_KICK, "Goal_Left": World.M_THEIR_GOAL, "offside_left": World.M_THEIR_OFFSIDE, + "KickOff_Right":World.M_OUR_KICKOFF, "KickIn_Right":World.M_OUR_KICK_IN, "corner_kick_right":World.M_OUR_CORNER_KICK, + "goal_kick_right":World.M_OUR_GOAL_KICK, "free_kick_right":World.M_OUR_FREE_KICK, "pass_right":World.M_OUR_PASS, + "direct_free_kick_right": World.M_OUR_DIR_FREE_KICK, "Goal_Right": World.M_OUR_GOAL, "offside_right": World.M_OUR_OFFSIDE, + "BeforeKickOff": World.M_BEFORE_KICKOFF, "GameOver": World.M_GAME_OVER, "PlayOn": World.M_PLAY_ON } + + + def find_non_digit(self,start): + while True: + if (self.exp[start] < ord('0') or self.exp[start] > ord('9')) and self.exp[start] != ord('.'): return start + start+=1 + + def find_char(self,start,char): + while True: + if self.exp[start] == char : return start + start+=1 + + def read_float(self, start): + if self.exp[start:start+3] == b'nan': return float('nan'), start+3 #handle nan values (they exist) + end = self.find_non_digit(start+1) #we assume the first one is a digit or minus sign + try: + retval = float(self.exp[start:end]) + except: + self.world.log(f"{self.LOG_PREFIX}String to float conversion failed: {self.exp[start:end]} at msg[{start},{end}], \nMsg: {self.exp.decode()}") + retval = 0 + return retval, end + + def read_int(self, start): + end = self.find_non_digit(start+1) #we assume the first one is a digit or minus sign + return int(self.exp[start:end]), end + + def read_bytes(self, start): + end = start + while True: + if self.exp[end] == ord(' ') or self.exp[end] == ord(')'): break + end+=1 + + return self.exp[start:end], end + + def read_str(self, start): + b, end = self.read_bytes(start) + return b.decode(), end + + def get_next_tag(self, start): + min_depth = self.depth + while True: + if self.exp[start] == ord(")") : #monitor xml element depth + self.depth -= 1 + if min_depth > self.depth: min_depth = self.depth + elif self.exp[start] == ord("(") : break + start+=1 + if start >= len(self.exp): return None, start, 0 + + self.depth += 1 + start += 1 + end = self.find_char(start, ord(" ")) + return self.exp[start:end], end, min_depth + + + def parse(self, exp): + + self.exp = exp #used by other member functions + self.depth = 0 #xml element depth + self.world.step += 1 + self.world.line_count = 0 + self.world.robot.frp = dict() + self.world.flags_posts = dict() + self.world.flags_corners = dict() + self.world.vision_is_up_to_date = False + self.world.ball_is_visible = False + self.world.robot.feet_toes_are_touching = dict.fromkeys(self.world.robot.feet_toes_are_touching, False) + self.world.time_local_ms += World.STEPTIME_MS + + for p in self.world.teammates: p.is_visible = False + for p in self.world.opponents: p.is_visible = False + + tag, end, _ = self.get_next_tag(0) + + while end < len(exp): + + if tag==b'time': + while True: + tag, end, min_depth = self.get_next_tag(end) + if min_depth == 0: break + + if tag==b'now': + #last_time = self.world.time_server + self.world.time_server, end = self.read_float(end+1) + + #Test server time reliability + #increment = self.world.time_server - last_time + #if increment < 0.019: print ("down",last_time,self.world.time_server) + #if increment > 0.021: print ("up",last_time,self.world.time_server) + else: + self.world.log(f"{self.LOG_PREFIX}Unknown tag inside 'time': {tag} at {end}, \nMsg: {exp.decode()}") + + + elif tag==b'GS': + while True: + tag, end, min_depth = self.get_next_tag(end) + if min_depth == 0: break + + if tag==b'unum': + _, end = self.read_int(end+1) #We already know our unum + elif tag==b'team': + aux, end = self.read_str(end+1) + is_left = bool(aux == "left") + if self.world.team_side_is_left != is_left: + self.world.team_side_is_left = is_left + self.play_mode_to_id = self.LEFT_PLAY_MODE_TO_ID if is_left else self.RIGHT_PLAY_MODE_TO_ID + self.world.draw.set_team_side(not is_left) + self.world.team_draw.set_team_side(not is_left) + elif tag==b'sl': + if self.world.team_side_is_left: + self.world.goals_scored, end = self.read_int(end+1) + else: + self.world.goals_conceded, end = self.read_int(end+1) + elif tag==b'sr': + if self.world.team_side_is_left: + self.world.goals_conceded, end = self.read_int(end+1) + else: + self.world.goals_scored, end = self.read_int(end+1) + elif tag==b't': + self.world.time_game, end = self.read_float(end+1) + elif tag==b'pm': + aux, end = self.read_str(end+1) + if self.play_mode_to_id is not None: + self.world.play_mode = self.play_mode_to_id[aux] + else: + self.world.log(f"{self.LOG_PREFIX}Unknown tag inside 'GS': {tag} at {end}, \nMsg: {exp.decode()}") + + + elif tag==b'GYR': + while True: + tag, end, min_depth = self.get_next_tag(end) + if min_depth == 0: break + + ''' + The gyroscope measures the robot's torso angular velocity (rotation rate vector) + The angular velocity's orientation is given by the right-hand rule. + + Original reference frame: + X:left(-)/right(+) Y:back(-)/front(+) Z:down(-)/up(+) + + New reference frame: + X:back(-)/front(+) Y:right(-)/left(+) Z:down(-)/up(+) + + ''' + + if tag==b'n': + pass + elif tag==b'rt': + self.world.robot.gyro[1], end = self.read_float(end+1) + self.world.robot.gyro[0], end = self.read_float(end+1) + self.world.robot.gyro[2], end = self.read_float(end+1) + self.world.robot.gyro[1] *= -1 + else: + self.world.log(f"{self.LOG_PREFIX}Unknown tag inside 'GYR': {tag} at {end}, \nMsg: {exp.decode()}") + + + elif tag==b'ACC': + while True: + tag, end, min_depth = self.get_next_tag(end) + if min_depth == 0: break + + ''' + The accelerometer measures the acceleration relative to freefall. It will read zero during any type of free fall. + When at rest relative to the Earth's surface, it will indicate an upwards acceleration of 9.81m/s^2 (in SimSpark). + + Original reference frame: + X:left(-)/right(+) Y:back(-)/front(+) Z:down(-)/up(+) + + New reference frame: + X:back(-)/front(+) Y:right(-)/left(+) Z:down(-)/up(+) + ''' + + if tag==b'n': + pass + elif tag==b'a': + self.world.robot.acc[1], end = self.read_float(end+1) + self.world.robot.acc[0], end = self.read_float(end+1) + self.world.robot.acc[2], end = self.read_float(end+1) + self.world.robot.acc[1] *= -1 + else: + self.world.log(f"{self.LOG_PREFIX}Unknown tag inside 'ACC': {tag} at {end}, \nMsg: {exp.decode()}") + + + elif tag==b'HJ': + while True: + tag, end, min_depth = self.get_next_tag(end) + if min_depth == 0: break + + if tag==b'n': + joint_name, end = self.read_str(end+1) + joint_index = Robot.MAP_PERCEPTOR_TO_INDEX[joint_name] + elif tag==b'ax': + joint_angle, end = self.read_float(end+1) + + #Fix symmetry issues 2/4 (perceptors) + if joint_name in Robot.FIX_PERCEPTOR_SET: joint_angle = -joint_angle + + old_angle = self.world.robot.joints_position[joint_index] + self.world.robot.joints_speed[joint_index] = (joint_angle - old_angle) / World.STEPTIME * math.pi / 180 + self.world.robot.joints_position[joint_index] = joint_angle + else: + self.world.log(f"{self.LOG_PREFIX}Unknown tag inside 'HJ': {tag} at {end}, \nMsg: {exp.decode()}") + + elif tag==b'FRP': + while True: + tag, end, min_depth = self.get_next_tag(end) + if min_depth == 0: break + + ''' + The reference frame is used for the contact point and force vector applied to that point + Note: The force vector is applied to the foot, so it usually points up + + Original reference frame: + X:left(-)/right(+) Y:back(-)/front(+) Z:down(-)/up(+) + + New reference frame: + X:back(-)/front(+) Y:right(-)/left(+) Z:down(-)/up(+) + + ''' + + if tag==b'n': + foot_toe_id, end = self.read_str(end+1) + self.world.robot.frp[foot_toe_id] = foot_toe_ref = np.empty(6) + self.world.robot.feet_toes_last_touch[foot_toe_id] = self.world.time_local_ms + self.world.robot.feet_toes_are_touching[foot_toe_id] = True + elif tag==b'c': + foot_toe_ref[1], end = self.read_float(end+1) + foot_toe_ref[0], end = self.read_float(end+1) + foot_toe_ref[2], end = self.read_float(end+1) + foot_toe_ref[1] *= -1 + elif tag==b'f': + foot_toe_ref[4], end = self.read_float(end+1) + foot_toe_ref[3], end = self.read_float(end+1) + foot_toe_ref[5], end = self.read_float(end+1) + foot_toe_ref[4] *= -1 + else: + self.world.log(f"{self.LOG_PREFIX}Unknown tag inside 'FRP': {tag} at {end}, \nMsg: {exp.decode()}") + + + elif tag==b'See': + self.world.vision_is_up_to_date = True + self.world.vision_last_update = self.world.time_local_ms + + while True: + tag, end, min_depth = self.get_next_tag(end) + if min_depth == 0: break + + tag_bytes = bytes(tag) #since bytearray is not hashable, it cannot be used as key for dictionaries + + if tag==b'G1R' or tag==b'G2R' or tag==b'G1L' or tag==b'G2L': + _, end, _ = self.get_next_tag(end) + + c1, end = self.read_float(end+1) + c2, end = self.read_float(end+1) + c3, end = self.read_float(end+1) + + aux = self.LEFT_SIDE_FLAGS[tag_bytes] if self.world.team_side_is_left else self.RIGHT_SIDE_FLAGS[tag_bytes] + self.world.flags_posts[aux] = (c1,c2,c3) + + elif tag==b'F1R' or tag==b'F2R' or tag==b'F1L' or tag==b'F2L': + _, end, _ = self.get_next_tag(end) + + c1, end = self.read_float(end+1) + c2, end = self.read_float(end+1) + c3, end = self.read_float(end+1) + + aux = self.LEFT_SIDE_FLAGS[tag_bytes] if self.world.team_side_is_left else self.RIGHT_SIDE_FLAGS[tag_bytes] + self.world.flags_corners[aux] = (c1,c2,c3) + + elif tag==b'B': + _, end, _ = self.get_next_tag(end) + + self.world.ball_rel_head_sph_pos[0], end = self.read_float(end+1) + self.world.ball_rel_head_sph_pos[1], end = self.read_float(end+1) + self.world.ball_rel_head_sph_pos[2], end = self.read_float(end+1) + self.world.ball_rel_head_cart_pos = M.deg_sph2cart(self.world.ball_rel_head_sph_pos) + self.world.ball_is_visible = True + self.world.ball_last_seen = self.world.time_local_ms + + elif tag==b'mypos': + + self.world.robot.cheat_abs_pos[0], end = self.read_float(end+1) + self.world.robot.cheat_abs_pos[1], end = self.read_float(end+1) + self.world.robot.cheat_abs_pos[2], end = self.read_float(end+1) + + elif tag==b'myorien': + + self.world.robot.cheat_ori, end = self.read_float(end+1) + + elif tag==b'ballpos': + + c1, end = self.read_float(end+1) + c2, end = self.read_float(end+1) + c3, end = self.read_float(end+1) + + self.world.ball_cheat_abs_vel[0] = (c1 - self.world.ball_cheat_abs_pos[0]) / World.VISUALSTEP + self.world.ball_cheat_abs_vel[1] = (c2 - self.world.ball_cheat_abs_pos[1]) / World.VISUALSTEP + self.world.ball_cheat_abs_vel[2] = (c3 - self.world.ball_cheat_abs_pos[2]) / World.VISUALSTEP + + self.world.ball_cheat_abs_pos[0] = c1 + self.world.ball_cheat_abs_pos[1] = c2 + self.world.ball_cheat_abs_pos[2] = c3 + + elif tag==b'P': + + while True: + previous_depth = self.depth + previous_end = end + tag, end, min_depth = self.get_next_tag(end) + if min_depth < 2: #if =1 we are still inside 'See', if =0 we are already outside 'See' + end = previous_end #The "P" tag is special because it's the only variable particle inside 'See' + self.depth = previous_depth + break # we restore the previous tag, and let 'See' handle it + + if tag==b'team': + player_team, end = self.read_str(end+1) + is_teammate = bool(player_team == self.world.team_name) + if self.world.team_name_opponent is None and not is_teammate: #register opponent team name + self.world.team_name_opponent = player_team + elif tag==b'id': + player_id, end = self.read_int(end+1) + player = self.world.teammates[player_id-1] if is_teammate else self.world.opponents[player_id-1] + player.body_parts_cart_rel_pos = dict() #reset seen body parts + player.is_visible = True + elif tag==b'llowerarm' or tag==b'rlowerarm' or tag==b'lfoot' or tag==b'rfoot' or tag==b'head': + tag_str = tag.decode() + _, end, _ = self.get_next_tag(end) + + c1, end = self.read_float(end+1) + c2, end = self.read_float(end+1) + c3, end = self.read_float(end+1) + + if is_teammate: + self.world.teammates[player_id-1].body_parts_sph_rel_pos[tag_str] = (c1,c2,c3) + self.world.teammates[player_id-1].body_parts_cart_rel_pos[tag_str] = M.deg_sph2cart((c1,c2,c3)) + else: + self.world.opponents[player_id-1].body_parts_sph_rel_pos[tag_str] = (c1,c2,c3) + self.world.opponents[player_id-1].body_parts_cart_rel_pos[tag_str] = M.deg_sph2cart((c1,c2,c3)) + else: + self.world.log(f"{self.LOG_PREFIX}Unknown tag inside 'P': {tag} at {end}, \nMsg: {exp.decode()}") + + elif tag==b'L': + l = self.world.lines[self.world.line_count] + + _, end, _ = self.get_next_tag(end) + l[0], end = self.read_float(end+1) + l[1], end = self.read_float(end+1) + l[2], end = self.read_float(end+1) + _, end, _ = self.get_next_tag(end) + l[3], end = self.read_float(end+1) + l[4], end = self.read_float(end+1) + l[5], end = self.read_float(end+1) + + if np.isnan(l).any(): + self.world.log(f"{self.LOG_PREFIX}Received field line with NaNs {l}") + else: + self.world.line_count += 1 #accept field line if there are no NaNs + + else: + self.world.log(f"{self.LOG_PREFIX}Unknown tag inside 'see': {tag} at {end}, \nMsg: {exp.decode()}") + + + elif tag==b'hear': + + team_name, end = self.read_str(end+1) + + if team_name == self.world.team_name: # discard message if it's not from our team + + timestamp, end = self.read_float(end+1) + + if self.exp[end+1] == ord('s'): # this message was sent by oneself + direction, end = "self", end+5 + else: # this message was sent by teammate + direction, end = self.read_float(end+1) + + msg, end = self.read_bytes(end+1) + self.hear_callback(msg, direction, timestamp) + + + tag, end, _ = self.get_next_tag(end) + + + else: + self.world.log(f"{self.LOG_PREFIX}Unknown root tag: {tag} at {end}, \nMsg: {exp.decode()}") + tag, end, min_depth = self.get_next_tag(end) + diff --git a/communication/__pycache__/Radio.cpython-313.pyc b/communication/__pycache__/Radio.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2a1138c7a195a50dab9e16eca1def65e6f765204 GIT binary patch literal 14747 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 literal 0 HcmV?d00001 diff --git a/communication/__pycache__/World_Parser.cpython-313.pyc b/communication/__pycache__/World_Parser.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e6b0db4a5834a285d8e16b0317352ddaccf847f1 GIT binary patch literal 25582 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�zE%)a4A#J^s`(mxYKWNtv2p}Eqb*bw|`RX9ov8KVVc6< zTcefzEl>BpnX;g+DWbV6J9dRDYVMwzKjrTa@2T|nhHD!`we4JO`%-(bwu{TF^0x;p}(%LkDd;9m;xPWC0;IU{g?30 z!hrLGoN!IUr`zvskE|FqhC8W&#JReE>_0h|c{gW1Csf+Pm9{Lp9+LORzAEizDSL== zag-}Wc{$3<`rcySzRLNog8g{|Zj}qfKWa7nDmxIrtUm}UABg{2UxWH_2Y1#k*cT53 z8;uX^*nz>nZDCJSEZh`!+67xCmYH522j`>WZrOa<$K`>9aCvp8yoD=oS+obs+wLR= z$T@Nad=uDtEfy@=?iayU?oL8L5okvq%VtaeM?q!S1%4&mS@b45$_ShY6*h5&O^e%L zz0BnbVNZIRD+G7l!4*0mxz2}NQ(w8J*y+pcmAApt9#*uWn~J8v;C@RG=fU7^faDBU z2%fC-tHR-x@4rWV;YXS~nvYWNq%IVGT6M3At!ZQ1;L@hE>?sQ5$2vw>`zSm5Cd*8Q zm@6D}CCI$ZzIhb}R*mlk+}WmhVjzk9g4HgP$k~n!udp!;<&|@J<#Wf79)~L0IQYwJ z_mkk>J+=6Oss6}x$F$JCNZvC1`)?nbJrv3< z=W@%%{c!(mKU{t1nfI_22ib$59%qsI?s?<4dA1diGc{l3)hrz4@*2O+s{ub)_QYV* zE{scwTo_u3+|ZGC@>bTJ1>8)%k?5~m$;b<+kf=lYdQM*-%&1=}D*cGMLxE$Ge$N^# z+JCeE#u2}FWoz#H7jIq+CEfjWO;pl+qK;%@$Y ze#Ch#Jv5t&OY;kEU!A=gIflq@xY-2d~LODMCL%S0y*M;4}+Gh1QE`30dJRosrM z1!ZtY{mrBs%GsT8n-U!0fbaEw>dn+ZA##VFRhQq1_^!@?589XngfbsYW<= z#^$jY zrKn*S^yKS@)>2EA-# zehC4eG==^diAwxWTnI<%krI5?D2({$2rv%bqfJaR{~oo(B>zv8GNZtR>eUAXE*@lH rH6YMCHLo6mRV7K1|3K{d2Vy(?{XLQN_r#Xp$2;T6mL~)XF^2yKs;^$J literal 0 HcmV?d00001 diff --git a/config.json b/config.json new file mode 100644 index 0000000..5f6b5e9 --- /dev/null +++ b/config.json @@ -0,0 +1,38 @@ +{ + "i": [ + "Server Hostname/IP", + "localhost" + ], + "p": [ + "Agent Port", + "3100" + ], + "m": [ + "Monitor Port", + "3200" + ], + "t": [ + "Team Name", + "FCPortugal" + ], + "u": [ + "Uniform Number", + "1" + ], + "r": [ + "Robot Type", + "1" + ], + "P": [ + "Penalty Shootout", + "0" + ], + "F": [ + "magmaFatProxy", + "0" + ], + "D": [ + "Debug Mode", + "1" + ] +} \ No newline at end of file diff --git a/cpp/a_star/Makefile b/cpp/a_star/Makefile new file mode 100644 index 0000000..d408f5f --- /dev/null +++ b/cpp/a_star/Makefile @@ -0,0 +1,14 @@ +src = $(wildcard *.cpp) +obj = $(src:.c=.o) + +CFLAGS = -O3 -shared -std=c++11 -fPIC -Wall $(PYBIND_INCLUDES) + +all: $(obj) + g++ $(CFLAGS) -o a_star.so $^ + +debug: $(filter-out lib_main.cpp,$(obj)) + g++ -O0 -std=c++14 -Wall -g -o debug.bin debug_main.cc $^ + +.PHONY: clean +clean: + rm -f $(obj) all diff --git a/cpp/a_star/a_star.c_info b/cpp/a_star/a_star.c_info new file mode 100644 index 0000000000000000000000000000000000000000..026800455120ec5cce154339c9337b75c4310455 GIT binary patch literal 25 bcmZo*naali0X +#include +#include +#define SQRT2 1.414213562373095f +#define LINES 321 +#define COLS 221 +#define MAX_RADIUS 5 // obstacle max radius in meters +#define IN_GOAL_LINE 312 // target line when go_to_goal is 'true' (312 -> 15.2m) +using std::chrono::high_resolution_clock; +using std::chrono::duration_cast; +using std::chrono::microseconds; + +/* +Map dimensions: 32m*22m +col 0 ... col 220 + line 0 + --- our goal --- line 1 + | | line 2 + | | line 3 + |--------------| ... + | | line 317 + | | line 318 + -- their goal -- line 319 + line 320 + +[(H)ard wall: -3, (S)oft wall: -2, (E)mpty: 0, 0 < Cost < inf] +*/ + +// build board cost statically +#define H27 -3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3 +#define S11 -2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 +#define S19 S11,-2,-2,-2,-2,-2,-2,-2,-2 +#define S97 S11,S11,S11,S11,S11,S11,S11,S11,-2,-2,-2,-2,-2,-2,-2,-2,-2 +#define S98 S11,S11,S11,S11,S11,S11,S11,S11,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2 +#define S221 S98,S98,S11,S11,-2,-2,-2 +#define E19 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +#define E197 E19,E19,E19,E19,E19,E19,E19,E19,E19,E19,0,0,0,0,0,0,0 +#define L0 S221 // Line 0: soft W +#define L0_1 L0,L0 +#define L2 S97,H27,S97 // Line 2: soft W, (goal post, back net, goal post), soft W +#define L2_5 L2,L2,L2,L2 +#define L6 S98,-3,-3,-3,S19,-3,-3,-3,S98 // Line 6: soft W, goal post, soft W, goal post, soft W +#define L6_10 L6,L6,L6,L6,L6 +#define L11 S98,-2,-3,-3,S19,-3,-3,-2,S98 // Line 11:soft W, empty field, goal post, soft W, goal post,empty field, soft W +#define L12 S11,-2,E197,-2,S11 // Line 12:soft W, empty field, soft W + +#define L12x33 L12,L12,L12,L12,L12,L12,L12,L12,L12,L12,L12,L12,L12,L12,L12,L12,L12,L12,L12,L12,L12,L12,L12,L12,L12,L12,L12,L12,L12,L12,L12,L12,L12 +#define LIN12_308 L12x33,L12x33,L12x33,L12x33,L12x33,L12x33,L12x33,L12x33,L12x33 + +#define L309 S98,-2,-3,-3,E19,-3,-3,-2,S98 // Line 309: soft W, empty field, goal post, empty field, goal post,empty field, soft W +#define L310 S98,-3,-3,-3,E19,-3,-3,-3,S98 // Line 310: soft W, goal post, inside goal, goal post, soft W +#define L310_314 L310,L310,L310,L310,L310 + +using std::min; +using std::max; + + +#define MIN min_node +Node* min_node; // non-expanded node with lowest predicted total cost (f) + +namespace open{ + + Node* insert(Node* new_node, Node* root) { + + new_node->left = nullptr; + new_node->right = nullptr; + + // Empty BST, return without saving min_node + if(root == nullptr){ + new_node->up = nullptr; + MIN = new_node; // save min node for fast access + return new_node; + } + + // If new_node is the new min node + if(new_node->f < MIN->f){ + MIN->left = new_node; + new_node->up = MIN; + MIN = new_node; + return root; + } + + Node* node = root; + float key = new_node->f; + + while(true){ + if (key < node->f) + if(node->left == nullptr){ + node->left = new_node; + break; + }else{ + node = node->left; + } + else{ + if(node->right == nullptr){ + node->right = new_node; + break; + }else{ + node = node->right; + } + } + } + + new_node->up = node; + return root; + } + + + // Remove min node + Node* pop(Node* root) { + + // Minimum node can have right child, but not left child + if (MIN->right == nullptr){ + if(MIN == root){ //------(A)------ min node is root and has no children + return nullptr; // BST is empty + } + MIN->up->left = nullptr; //------(B)------ min node has no children but has parent + MIN = MIN->up; + }else{ + if(MIN == root){ //------(C)------ min node is root and has right child + MIN = MIN->right; + root = MIN; + root->up = nullptr; + + while(MIN->left != nullptr){ // update new min node + MIN = MIN->left; + } + + return root; // right child is now root + } + MIN->right->up = MIN->up; //------(D)------ min node has right child and parent + MIN->up->left = MIN->right; + + MIN = MIN->right; + while(MIN->left != nullptr){ // update new min node + MIN = MIN->left; + } + } + + return root; + } + + + // Remove specific node + Node* delete_node(Node* node, Node* root) { + + if(node == MIN){ // remove min node + return pop(root); + } + + if(node->left==nullptr and node->right==nullptr){ //------(A)------ node has no children (it can't be root, otherwise it would be min node) + // Redirect incoming connection + if(node->up->left == node){ node->up->left = nullptr; } + else{ node->up->right = nullptr; } + + }else if(node->left==nullptr){ //------(B)------ node has right child (it can't be root, otherwise it would be min node) + // Redirect incoming connections + node->right->up = node->up; + if(node->up->left == node){ node->up->left = node->right; } + else{ node->up->right = node->right; } + + }else if(node->right==nullptr){ //------(C)------ node has left child + if(node == root){ + node->left->up = nullptr; + return node->left; // left child becomes root + } + + // Redirect incoming connections (if not root) + node->left->up = node->up; + if(node->up->left == node){ node->up->left = node->left; } + else{ node->up->right = node->left; } + + }else{ //------(D)------ node has 2 children + Node *successor = node->right; + if(successor->left == nullptr){ //----- if successor is the node's right child (successor has no left child) + + //-------------- successor replaces node + + // Outgoing connections (successor's right child is not changed) + successor->left = node->left; + successor->up = node->up; // if node is root this is also ok + + // Incoming connections + node->left->up = successor; + + if(node == root){ return successor; } // successor becomes root + + // Incoming connections (if not root) + if(node->up->left == node){ node->up->left = successor; } + else{ node->up->right = successor; } + + }else{ //------ if successor is deeper (successor has no left child, and is itself a left child) + do{ + successor = successor->left; + }while(successor->left != nullptr); + + //-------------- Remove successor by redirecting its incoming connections + if(successor->right==nullptr){ // no children + successor->up->left = nullptr; + }else{ + successor->up->left = successor->right; + successor->right->up = successor->up; + } + + //-------------- successor replaces node + + // Outgoing connections + successor->left = node->left; + successor->right = node->right; + successor->up = node->up; // if node is root this is also ok + + // Incoming connections + node->left->up = successor; + node->right->up = successor; + + if(node == root){ return successor; } // successor becomes root + + // Incoming connections (if not root) + if(node->up->left == node){ node->up->left = successor; } + else{ node->up->right = successor; } + } + } + + return root; + } + + // Inorder Traversal + // void inorder(Node* root, Node* board) { + // if (root != nullptr) { + // // Traverse left + // inorder(root->left, board); + + // // Traverse root + // std::cout << (root-board)/COLS << " " << (root-board)%COLS << " -> "; + + // // Traverse right + // inorder(root->right, board); + + // } + // return; + // } +} + + + + +inline int x_to_line(float x){ + return int(fmaxf(0.f, fminf(10*x+160, 320.f)) + 0.5f); +} + +inline int y_to_col(float y){ + return int(fmaxf(0.f, fminf(10*y+110, 220.f)) + 0.5f); +} + +inline float diagonal_distance(bool go_to_goal, int line, int col, int end_l, int end_c){ + // diagonal distance - adapted from http://theory.stanford.edu/~amitp/GameProgramming/Heuristics.html + int dl, dc; + if( go_to_goal ){ + dl = abs(IN_GOAL_LINE - line); + if (col>119) { dc = col-119; } + else if (col<101) { dc = 101-col; } + else { dc = 0; } + }else{ + dl = abs(line - end_l); + dc = abs(col - end_c); + } + return (dl + dc) - 0.585786437626905f * min(dl,dc); +} + +inline Node* expand_child(Node* open_root, float cost, float wall_index, Node* curr_node, Node* board, int pos, int state, + bool go_to_goal, int line, int col, int end_l, int end_c, unsigned int* node_state, float extra ){ + // child can be as inaccessible as current pos (but there is a cost penalty to avoid inaccessible paths) + if(cost <= wall_index){ + cost = 100.f; + } + + // g (min cost from start to n) + float g = curr_node->g + extra + std::fmaxf(0.f,cost); // current cost + child distance + + Node* child = &board[pos]; + + // if child is already in the open set + if (state){ + if (g >= child->g){ + return open_root; // if not an improvement, we discard the new child + }else{ + open_root = open::delete_node(child, open_root); // if it is an improvement: remove reference, update it, add it again in correct order + } + }else{ + node_state[pos] = 1; + } + + // f (prediction of min total cost passing through n) + float f = g + diagonal_distance(go_to_goal,line,col,end_l,end_c); + + child->g = g; + child->f = f; + child->parent = curr_node; + return open::insert(child, open_root); +} + + +float final_path[2050]; +int final_path_size; + +inline void build_final_path(Node* const best_node, const Node* board, float status, const bool override_end=false, const float end_x=0, const float end_y=0){ + // Node* pt = best_node; + // while( pt != nullptr ){ + // int pos = pt - board; + // board_cost[pos] = -4; + // pt = pt->parent; + // } + // std::cout << "\n"; + // for(int l=l_min; l<=l_max; l++){ + // for(int c=c_min; c<=c_max; c++){ + // //[(H)ard wall: -3, (S)oft wall: -2, (E)mpty: 0, 0 < Cost < inf] + // //if (board[l][c].closed) std::cout << "o"; + // if (board_cost[l*COLS+c] == -3) std::cout << "h"; + // else if (board_cost[l*COLS+c] == -2) std::cout << "s"; + // else if (board_cost[l*COLS+c] == -4) std::cout << "."; + // else if (board_cost[l*COLS+c] == -1) std::cout << "g"; + // else if (board_cost[l*COLS+c] == 0 and node_state[l*COLS+c]==2) std::cout << "o"; + // else if (board_cost[l*COLS+c] == 0) std::cout << " "; + // //ele ainda nao sabe ler hard walls + // else std::cout << int(board_cost[l*COLS+c]+0.5f); + // } + // std::cout << "\n"; + // } + + // Using 'current_node' would suffice if A* reaches the objective (but 'best_node' works with impossible paths or timeout) + Node* ptr = best_node; + int counter=0; + do{ + ptr = ptr->parent; + counter++; + }while( ptr != nullptr ); + + final_path_size = min(counter*2,2048); + + ptr = best_node; + int i = final_path_size-1; + + // if enabled, replace end point with correct coordinates instead of discrete version + if(override_end){ + final_path[i--] = end_y; + final_path[i--] = end_x; + ptr = ptr->parent; + } + + for(; i>0;){ + final_path[i--] = ((ptr-board) % COLS)/10.f-11.f; // y + final_path[i--] = ((ptr-board) / COLS)/10.f-16.f; // x + ptr = ptr->parent; + } + + // add status (& increment path size) + final_path[final_path_size++] = status; // 0-success, 1-timeout, 2-impossible, 3-no obstacles(this one is not done in this function) + + // add cost (& increment path size) + final_path[final_path_size++] = best_node->g / 10.f; // min. A* cost from start to best_node + +} + + +/** + * @brief Returns true if line segment 'ab' intersects either goal (considering the unreachable area) + * - This function assumes that 'a' and 'b' are two points outside the unreachable goal area + * - Therefore, 'ab' must enter and exit the goal unreachable area + * - To detect this, we consider only the intersection of 'ab' and the goal outer borders (back+sides) + * - The front should already be covered by independent goal posts checks + */ +inline bool does_intersect_any_goal(float a_x, float a_y, float b_x, float b_y){ + + float ab_x = b_x - a_x; + float ab_y = b_y - a_y; + float k; + + if(ab_x != 0){ // Check if 'ab' and goal back is noncollinear (collinear intersections are ignored) + + k = (15.75-a_x) / ab_x; // a_x + ab_x*k = 15.75 + if (k >= 0 and k <= 1 and fabsf(a_y + ab_y * k) <= 1.25){ // collision (intersection_y = a_y + ab_y*k) + return true; + } + + k = (-15.75-a_x) / ab_x; // a_x + ab_x*k = -15.75 + if (k >= 0 and k <= 1 and fabsf(a_y + ab_y * k) <= 1.25){ // collision (intersection_y = a_y + ab_y*k) + return true; + } + } + + if(ab_y != 0){ // Check if 'ab' and goal sides are noncollinear (collinear intersections are ignored) + + k = (1.25-a_y) / ab_y; // a_y + ab_y*k = 1.25 + if( k >= 0 and k <= 1){ + float intersection_x_abs = fabsf(a_x + ab_x * k); + if( intersection_x_abs >= 15 and intersection_x_abs <= 15.75 ){ // check one side for both goals at same time + return true; + } + } + + k = (-1.25-a_y) / ab_y; // a_y + ab_y*k = -1.25 + if( k >= 0 and k <= 1){ + float intersection_x_abs = fabsf(a_x + ab_x * k); + if( intersection_x_abs >= 15 and intersection_x_abs <= 15.75 ){ // check one side for both goals at same time + return true; + } + } + } + + return false; +} + + +/** + * @brief Add space cushion near the midlines and endlines + */ +inline void add_space_cushion(float board_cost[]){ + + #define CUSHION_WIDTH 6 + + // opponent goal line + for(int i=0; i 0)){ + return true; + } + + + if (go_to_goal){ // This is a safe target. If it generates a collision with any goal post, we use A* instead. + end_x = 15.2; + end_y = max(-0.8f, min(start_y, 0.8f)); + }else{ // Restrict end coordinates to map + end_x = max(-16.f, min(end_x, 16.f)); + end_y = max(-11.f, min(end_y, 11.f)); + + // Let A* handle it if the end position is unreachable or (is nearly out of bounds && out of bounds is not allowed && not near end) + if(e_cost <= wall_index or (!is_near and e_cost > 0)){ + return true; + } + } + + + /** + * Check if path intersects either goal (considering the unreachable area) + * - at this point we know that 'start' and 'end' are reachable + * - Therefore, the path must enter and exit the goal unreachable area for an intersection to exist + * - To detect this, we consider only the intersection of the path and the goal outer borders (back+sides) + * - The front is covered next by goal posts checks + */ + if (does_intersect_any_goal(start_x, start_y, end_x, end_y)) { + return true; + } + + /** + * ----------------------- List all obstacles: given obstacles + goal posts + * note that including the goal posts in the given obstacles is not a bad idea since the default + * goal posts we add here provide no space cushion (which may be needed if the robot is not precise) + * values explanation: + * - goal post location (tested in simulator, collision with robot, robot is sideways to the goal post and arms are close to body) + * - hard radius (tested in the same way, robot collides when closer than 0.15m from goal post border) + * post radius 0.02 + agent radius 0.15 = 0.17 + * - largest radius (equivalent to hard radius, since there is no soft radius) + */ + + float obst[given_obst_size*4/5+16] = { + 15.02, 1.07, 0.17, 0.17, + 15.02, -1.07, 0.17, 0.17, + -15.02, 1.07, 0.17, 0.17, + -15.02, -1.07, 0.17, 0.17 + }; // x, y, hard radius, largest radius + + + int obst_size = 16; + + for(int i=0; istart center<->end + return true; + } + } + }else{ + + //-------------------- Normal case (start !~= end): the path is obstructed if it intersects any hard or soft circumference + + // for each obstacle: check if circle intersects line segment (start-end) + for(int ob=0; obcenter onto start->end + float sc_proj_y = se_y * sc_proj_scale; // projection of start->center onto start->end + + // check if projection falls on top of trajectory (start->projection = k * start->end) + float k = abs(se_x)>abs(se_y) ? sc_proj_x/se_x : sc_proj_y/se_y; // we use the largest dimension of start->end to avoid division by 0 + + if(k <= 0){ + if(sc_x*sc_x + sc_y*sc_y <= r_sq){ // check distance: center<->start + return true; + } + }else if(k >= 1){ + float ec_x = c_x - end_x; + float ec_y = c_y - end_y; + if(ec_x*ec_x + ec_y*ec_y <= r_sq){ // check distance: center<->end + return true; + } + }else{ + float proj_c_x = c_x - (sc_proj_x + start_x); + float proj_c_y = c_y - (sc_proj_y + start_y); + if(proj_c_x*proj_c_x + proj_c_y*proj_c_y <= r_sq){ // check distance: center<->projection + return true; + } + } + } + } + + float path_x = end_x - start_x; + float path_y = end_y - start_y; + + final_path_size = 6; + final_path[0] = start_x; + final_path[1] = start_y; + final_path[2] = end_x; + final_path[3] = end_y; + final_path[4] = 3; // status: 3-no obstacles + final_path[5] = sqrtf(path_x*path_x+path_y*path_y) + max(0.f, e_cost/10.f); // min. A* cost from start to end (e_cost is added even if start==end to help debug cell costs) + + return false; // no obstruction was found +} + +// opponent players + active player + restricted areas (from referee) +// data: +// [start x][start y] +// [allow out of bounds?][go to goal?] +// [optional target x][optional target y] +// [timeout] +// [x][y][hard radius][soft radius][force] +void astar(float params[], int params_size){ + + auto t1 = high_resolution_clock::now(); + + const float s_x = params[0]; // start x + const float s_y = params[1]; // start y + const bool allow_out_of_bounds = params[2]; + const int wall_index = allow_out_of_bounds ? -3 : -2; // (cost <= wall_index) means 'unreachable' + const bool go_to_goal = params[3]; + const float opt_t_x = params[4]; // optional target x + const float opt_t_y = params[5]; // optional target y + const int timeout_us = params[6]; + float* obstacles = ¶ms[7]; + int obst_size = params_size-7; // size of obstacles array + + //======================================================== Populate board 0: add field layout + float board_cost[LINES*COLS] = {L0_1,L2_5,L6_10,L11,LIN12_308,L309,L310_314,L2_5,L0_1}; + + if (!allow_out_of_bounds){ // add cost to getting near sideline or endline (except near goal) + add_space_cushion(board_cost); + } + + //======================================================== Check if path is obstructed + + if (!is_path_obstructed(s_x, s_y, opt_t_x, opt_t_y, obstacles, obst_size, go_to_goal, wall_index, board_cost)){ + return; // return if path is not obstructed + } + + //======================================================== Define board basics (start, end, limits) + + // if the start point is out of field, it is brought in + const int start_l = x_to_line(s_x); + const int start_c = y_to_col(s_y); + const int start_pos = start_l * COLS + start_c; + + // define objective (go to goal or a specific point) + int end_l, end_c; + if(!go_to_goal){ + end_l = x_to_line(opt_t_x); + end_c = y_to_col(opt_t_y); + }else{ + end_l = IN_GOAL_LINE; + } + + // define board limits considering the initial and final positions (and obstacles in the next section, and goals after that) + int l_min = min(start_l, end_l); + int l_max = max(start_l, end_l); + int c_min, c_max; + if(go_to_goal){ + c_min = min(start_c,119); + c_max = max(start_c,101); + }else{ + c_min = min(start_c, end_c); + c_max = max(start_c, end_c); + } + + if (!allow_out_of_bounds){ // workspace must contain a bit of empty field if out of bounds is not allowed + l_min = min(l_min, 306); + l_max = max(14, l_max); + c_min = min(c_min, 206); + c_max = max(14, c_max); + } + + //======================================================== Initialize A* + + Node* open_root = nullptr; + Node board[LINES*COLS]; + unsigned int node_state[LINES*COLS] = {0}; //0-unknown, 1-open, 2-closed + + //======================================================== Populate board 1: convert obstacles to cost + for(int ob=0; ob=0 and c>=0 and l=0 and c>=0 and l wall_index and cost < fr){ + board_cost[p] = fr; + } + } + } + + // adjust board limits if working area overlaps goal area (which includes walking margin) + if (c_max > 96 and c_min < 124){ // Otherwise it does not overlap any goal + if (l_max > 1 and l_min < 12 ){ // Overlaps our goal + l_max = max(12,l_max); // Extend working area to include our goal + l_min = min(l_min,1); + c_max = max(124,c_max); + c_min = min(c_min,96); + } + if (l_max > 308 and l_min < 319 ){ // Overlaps their goal + l_max = max(319,l_max); // Extend working area to include their goal + l_min = min(l_min,308); + c_max = max(124,c_max); + c_min = min(c_min,96); + } + } + + + //======================================================== Populate board 2: add objective + // Explanation: if objective is not accessible we do not add it to the map, although its reference still exists. + // Therefore, we know how far we are from that reference, but it cannot be reached. + // Even if we are on top of the objective, the idea is to get away, to the nearest valid position. + if(!go_to_goal){ + float *end_cost = &board_cost[end_l*COLS+end_c]; + if(*end_cost > wall_index){ + *end_cost = -1; + } + }else{ + for(int i=IN_GOAL_LINE*COLS+101; i<=IN_GOAL_LINE*COLS+119; i++){ + if(board_cost[i] > wall_index){ + board_cost[i] = -1; + } + } + } + + // add board limits as an additional restriction to workspace + l_min = max(0, l_min); + l_max = min(l_max, 320); + c_min = max(0, c_min); + c_max = min(c_max, 220); + + // add start node to open list (it will be closed right away, so there is not need to set it as open) + board[start_pos].g = 0; // This is needed to compute the cost of child nodes, but f is not needed because there are no comparisons with other nodes in the open BST + board[start_pos].parent = nullptr; //This is where the path ends + open_root = open::insert(&board[start_pos], open_root); + int measure_timeout=0; + Node* best_node = &board[start_pos]; // save best node based on distance to goal (useful if impossible/timeout to get best path) + + float best_node_dist = std::numeric_limits::max(); // infinite distance if start is itself unreachable + if(board_cost[start_pos] > wall_index){ + best_node_dist = diagonal_distance(go_to_goal,start_l,start_c,end_l,end_c); + } + + + + //======================================================== A* algorithm + while (open_root != nullptr){ + + // Get next best node (lowest predicted total cost (f)) + Node* curr_node = min_node; + const int curr_pos = curr_node - board; + const int curr_line = curr_pos / COLS; + const int curr_col = curr_pos % COLS; + const float curr_cost = board_cost[curr_pos]; + measure_timeout = (measure_timeout+1) & 31; // check timeout at every 32 iterations + + // save best node based on distance to goal (useful if impossible/timeout) + if(curr_cost > wall_index){ + float dd = diagonal_distance(go_to_goal,curr_line,curr_col,end_l,end_c); + if(best_node_dist > dd){ + best_node = curr_node; + best_node_dist = dd; + } + } + + + open_root = open::pop(open_root); + node_state[curr_pos] = 2; + + // Check if we reached objective + if( curr_cost == -1 ){ + // replace end point with correct coordinates instead of discrete version if the optional target was defined (not going to goal) + build_final_path(best_node, board, 0, !go_to_goal, opt_t_x, opt_t_y); + return; + } + if( measure_timeout==0 and duration_cast(high_resolution_clock::now() - t1).count() > timeout_us ){ + build_final_path(best_node, board, 1); + return; + } + + // Expand child nodes + bool rcol_ok = curr_col < c_max; + bool lcol_ok = curr_col > c_min; + + if(curr_line > l_min){ + int line = curr_line - 1; + int col = curr_col - 1; + int pos = curr_pos - COLS - 1; + float cost = board_cost[pos]; + int state = node_state[pos]; + + // check if not an obstacle and if node is not closed (child can be as inaccessible as current pos) + if (state!=2 and !(cost <= wall_index and cost < curr_cost) and lcol_ok){ + open_root = expand_child(open_root,cost,wall_index,curr_node,board,pos,state,go_to_goal,line,col,end_l,end_c,node_state,SQRT2); + } + + col++; + pos++; + cost = board_cost[pos]; + state = node_state[pos]; + + // check if not an obstacle and if node is not closed (child can be as inaccessible as current pos) + if (state!=2 and !(cost <= wall_index and cost < curr_cost)){ + open_root = expand_child(open_root,cost,wall_index,curr_node,board,pos,state,go_to_goal,line,col,end_l,end_c,node_state,1); + } + + col++; + pos++; + cost = board_cost[pos]; + state = node_state[pos]; + + // check if not an obstacle and if node is not closed (child can be as inaccessible as current pos) + if (state!=2 and !(cost <= wall_index and cost < curr_cost) and rcol_ok){ + open_root = expand_child(open_root,cost,wall_index,curr_node,board,pos,state,go_to_goal,line,col,end_l,end_c,node_state,SQRT2); + } + + } + + if(curr_line < l_max){ + int line = curr_line + 1; + int col = curr_col - 1; + int pos = curr_pos + COLS - 1; + float cost = board_cost[pos]; + int state = node_state[pos]; + + // check if not an obstacle and if node is not closed (child can be as inaccessible as current pos) + if (state!=2 and !(cost <= wall_index and cost < curr_cost) and lcol_ok){ + open_root = expand_child(open_root,cost,wall_index,curr_node,board,pos,state,go_to_goal,line,col,end_l,end_c,node_state,SQRT2); + } + + col++; + pos++; + cost = board_cost[pos]; + state = node_state[pos]; + + // check if not an obstacle and if node is not closed (child can be as inaccessible as current pos) + if (state!=2 and !(cost <= wall_index and cost < curr_cost)){ + open_root = expand_child(open_root,cost,wall_index,curr_node,board,pos,state,go_to_goal,line,col,end_l,end_c,node_state,1); + } + + col++; + pos++; + cost = board_cost[pos]; + state = node_state[pos]; + + // check if not an obstacle and if node is not closed (child can be as inaccessible as current pos) + if (state!=2 and !(cost <= wall_index and cost < curr_cost) and rcol_ok){ + open_root = expand_child(open_root,cost,wall_index,curr_node,board,pos,state,go_to_goal,line,col,end_l,end_c,node_state,SQRT2); + } + } + + + { + int col = curr_col - 1; + int pos = curr_pos - 1; + float cost = board_cost[pos]; + int state = node_state[pos]; + + // check if not an obstacle and if node is not closed (child can be as inaccessible as current pos) + if (state!=2 and !(cost <= wall_index and cost < curr_cost) and lcol_ok){ + open_root = expand_child(open_root,cost,wall_index,curr_node,board,pos,state,go_to_goal,curr_line,col,end_l,end_c,node_state,1); + } + + col+=2; + pos+=2; + cost = board_cost[pos]; + state = node_state[pos]; + + + // check if not an obstacle and if node is not closed (child can be as inaccessible as current pos) + if (state!=2 and !(cost <= wall_index and cost < curr_cost) and rcol_ok){ + open_root = expand_child(open_root,cost,wall_index,curr_node,board,pos,state,go_to_goal,curr_line,col,end_l,end_c,node_state,1); + } + } + + + } + + build_final_path(best_node, board, 2); + return; +} \ No newline at end of file diff --git a/cpp/a_star/a_star.h b/cpp/a_star/a_star.h new file mode 100644 index 0000000..16d0974 --- /dev/null +++ b/cpp/a_star/a_star.h @@ -0,0 +1,26 @@ +#pragma once + +/** + * FILENAME: a_star.h + * DESCRIPTION: custom A* pathfinding implementation, optimized for the soccer environment + * AUTHOR: Miguel Abreu (m.abreu@fe.up.pt) + * DATE: 2022 + */ + +struct Node{ + + //------------- BST parameters + Node* left; + Node* right; + Node* up; + + //------------- A* parameters + Node* parent; + float g; + float f; + +}; + +extern void astar(float params[], int params_size); +extern float final_path[2050]; +extern int final_path_size; \ No newline at end of file diff --git a/cpp/a_star/a_star.so b/cpp/a_star/a_star.so new file mode 100755 index 0000000000000000000000000000000000000000..342e5ce4961224699653af78168087574d60df03 GIT binary patch literal 344720 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 VeU-#>Q~59T_-6sG5 literal 0 HcmV?d00001 diff --git a/cpp/a_star/debug_main.cc b/cpp/a_star/debug_main.cc new file mode 100644 index 0000000..1cd5f83 --- /dev/null +++ b/cpp/a_star/debug_main.cc @@ -0,0 +1,37 @@ +#include "a_star.h" +#include +#include + +using std::chrono::high_resolution_clock; +using std::chrono::duration_cast; +using std::chrono::microseconds; + +std::chrono::_V2::system_clock::time_point t1,t2; + +float params[] = { + 15.78,-0.07, //start + 1,1, //out of bounds? go to goal? + 0,0, //target (if not go to goal) + 500000, // timeout + -10,0,1,5,5, + -10,1,1,7,10, + -10,-7,0,5,1 +}; +int params_size = sizeof(params)/sizeof(params[0]); + + +int main(){ + + t1 = high_resolution_clock::now(); + astar(params, params_size); + t2 = high_resolution_clock::now(); + + std::cout << duration_cast(t2 - t1).count() << "us (includes initialization)\n"; + + t1 = high_resolution_clock::now(); + astar(params, params_size); + t2 = high_resolution_clock::now(); + + std::cout << duration_cast(t2 - t1).count() << "us\n"; + +} \ No newline at end of file diff --git a/cpp/a_star/expansion_groups.h b/cpp/a_star/expansion_groups.h new file mode 100644 index 0000000..d8350b5 --- /dev/null +++ b/cpp/a_star/expansion_groups.h @@ -0,0 +1,6 @@ +const int expansion_positions_no = 7845; +const float expansion_pos_dist[7845] = {0.0,0.1,0.1,0.1,0.1,0.14142135623730953,0.14142135623730953,0.14142135623730953,0.14142135623730953,0.2,0.2,0.2,0.2,0.223606797749979,0.223606797749979,0.223606797749979,0.223606797749979,0.223606797749979,0.223606797749979,0.223606797749979,0.223606797749979,0.28284271247461906,0.28284271247461906,0.28284271247461906,0.28284271247461906,0.30000000000000004,0.30000000000000004,0.30000000000000004,0.30000000000000004,0.316227766016838,0.316227766016838,0.316227766016838,0.316227766016838,0.316227766016838,0.316227766016838,0.316227766016838,0.316227766016838,0.36055512754639896,0.36055512754639896,0.36055512754639896,0.36055512754639896,0.36055512754639896,0.36055512754639896,0.36055512754639896,0.36055512754639896,0.4,0.4,0.4,0.4,0.41231056256176607,0.41231056256176607,0.41231056256176607,0.41231056256176607,0.41231056256176607,0.41231056256176607,0.41231056256176607,0.41231056256176607,0.4242640687119285,0.4242640687119285,0.4242640687119285,0.4242640687119285,0.447213595499958,0.447213595499958,0.447213595499958,0.447213595499958,0.447213595499958,0.447213595499958,0.447213595499958,0.447213595499958,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5099019513592785,0.5099019513592785,0.5099019513592785,0.5099019513592785,0.5099019513592785,0.5099019513592785,0.5099019513592785,0.5099019513592785,0.5385164807134504,0.5385164807134504,0.5385164807134504,0.5385164807134504,0.5385164807134504,0.5385164807134504,0.5385164807134504,0.5385164807134504,0.5656854249492381,0.5656854249492381,0.5656854249492381,0.5656854249492381,0.5830951894845301,0.5830951894845301,0.5830951894845301,0.5830951894845301,0.5830951894845301,0.5830951894845301,0.5830951894845301,0.5830951894845301,0.6000000000000001,0.6000000000000001,0.6000000000000001,0.6000000000000001,0.608276253029822,0.608276253029822,0.608276253029822,0.608276253029822,0.608276253029822,0.608276253029822,0.608276253029822,0.608276253029822,0.632455532033676,0.632455532033676,0.632455532033676,0.632455532033676,0.632455532033676,0.632455532033676,0.632455532033676,0.632455532033676,0.6403124237432849,0.6403124237432849,0.6403124237432849,0.6403124237432849,0.6403124237432849,0.6403124237432849,0.6403124237432849,0.6403124237432849,0.670820393249937,0.670820393249937,0.670820393249937,0.670820393249937,0.670820393249937,0.670820393249937,0.670820393249937,0.670820393249937,0.7000000000000001,0.7000000000000001,0.7000000000000001,0.7000000000000001,0.7071067811865476,0.7071067811865476,0.7071067811865476,0.7071067811865476,0.7071067811865476,0.7071067811865476,0.7071067811865476,0.7071067811865476,0.7071067811865476,0.7071067811865476,0.7071067811865476,0.7071067811865476,0.7211102550927979,0.7211102550927979,0.7211102550927979,0.7211102550927979,0.7211102550927979,0.7211102550927979,0.7211102550927979,0.7211102550927979,0.7280109889280518,0.7280109889280518,0.7280109889280518,0.7280109889280518,0.7280109889280518,0.7280109889280518,0.7280109889280518,0.7280109889280518,0.7615773105863909,0.7615773105863909,0.7615773105863909,0.7615773105863909,0.7615773105863909,0.7615773105863909,0.7615773105863909,0.7615773105863909,0.7810249675906654,0.7810249675906654,0.7810249675906654,0.7810249675906654,0.7810249675906654,0.7810249675906654,0.7810249675906654,0.7810249675906654,0.8,0.8,0.8,0.8,0.8062257748298549,0.8062257748298549,0.8062257748298549,0.8062257748298549,0.8062257748298549,0.8062257748298549,0.8062257748298549,0.8062257748298549,0.8062257748298549,0.8062257748298549,0.8062257748298549,0.8062257748298549,0.8062257748298549,0.8062257748298549,0.8062257748298549,0.8062257748298549,0.8246211251235321,0.8246211251235321,0.8246211251235321,0.8246211251235321,0.8246211251235321,0.8246211251235321,0.8246211251235321,0.8246211251235321,0.848528137423857,0.848528137423857,0.848528137423857,0.848528137423857,0.8544003745317531,0.8544003745317531,0.8544003745317531,0.8544003745317531,0.8544003745317531,0.8544003745317531,0.8544003745317531,0.8544003745317531,0.8602325267042628,0.8602325267042628,0.8602325267042628,0.8602325267042628,0.8602325267042628,0.8602325267042628,0.8602325267042628,0.8602325267042628,0.894427190999916,0.894427190999916,0.894427190999916,0.894427190999916,0.894427190999916,0.894427190999916,0.894427190999916,0.894427190999916,0.9,0.9,0.9,0.9,0.9055385138137417,0.9055385138137417,0.9055385138137417,0.9055385138137417,0.9055385138137417,0.9055385138137417,0.9055385138137417,0.9055385138137417,0.9219544457292888,0.9219544457292888,0.9219544457292888,0.9219544457292888,0.9219544457292888,0.9219544457292888,0.9219544457292888,0.9219544457292888,0.9219544457292888,0.9219544457292888,0.9219544457292888,0.9219544457292888,0.9219544457292888,0.9219544457292888,0.9219544457292888,0.9219544457292888,0.9433981132056604,0.9433981132056604,0.9433981132056604,0.9433981132056604,0.9433981132056604,0.9433981132056604,0.9433981132056604,0.9433981132056604,0.9486832980505139,0.9486832980505139,0.9486832980505139,0.9486832980505139,0.9486832980505139,0.9486832980505139,0.9486832980505139,0.9486832980505139,0.9848857801796105,0.9848857801796105,0.9848857801796105,0.9848857801796105,0.9848857801796105,0.9848857801796105,0.9848857801796105,0.9848857801796105,0.9899494936611666,0.9899494936611666,0.9899494936611666,0.9899494936611666,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.004987562112089,1.004987562112089,1.004987562112089,1.004987562112089,1.004987562112089,1.004987562112089,1.004987562112089,1.004987562112089,1.019803902718557,1.019803902718557,1.019803902718557,1.019803902718557,1.019803902718557,1.019803902718557,1.019803902718557,1.019803902718557,1.0295630140987002,1.0295630140987002,1.0295630140987002,1.0295630140987002,1.0295630140987002,1.0295630140987002,1.0295630140987002,1.0295630140987002,1.044030650891055,1.044030650891055,1.044030650891055,1.044030650891055,1.044030650891055,1.044030650891055,1.044030650891055,1.044030650891055,1.063014581273465,1.063014581273465,1.063014581273465,1.063014581273465,1.063014581273465,1.063014581273465,1.063014581273465,1.063014581273465,1.0770329614269007,1.0770329614269007,1.0770329614269007,1.0770329614269007,1.0770329614269007,1.0770329614269007,1.0770329614269007,1.0770329614269007,1.0816653826391969,1.0816653826391969,1.0816653826391969,1.0816653826391969,1.0816653826391969,1.0816653826391969,1.0816653826391969,1.0816653826391969,1.1,1.1,1.1,1.1,1.104536101718726,1.104536101718726,1.104536101718726,1.104536101718726,1.104536101718726,1.104536101718726,1.104536101718726,1.104536101718726,1.118033988749895,1.118033988749895,1.118033988749895,1.118033988749895,1.118033988749895,1.118033988749895,1.118033988749895,1.118033988749895,1.118033988749895,1.118033988749895,1.118033988749895,1.118033988749895,1.118033988749895,1.118033988749895,1.118033988749895,1.118033988749895,1.1313708498984762,1.1313708498984762,1.1313708498984762,1.1313708498984762,1.140175425099138,1.140175425099138,1.140175425099138,1.140175425099138,1.140175425099138,1.140175425099138,1.140175425099138,1.140175425099138,1.140175425099138,1.140175425099138,1.140175425099138,1.140175425099138,1.140175425099138,1.140175425099138,1.140175425099138,1.140175425099138,1.1661903789690602,1.1661903789690602,1.1661903789690602,1.1661903789690602,1.1661903789690602,1.1661903789690602,1.1661903789690602,1.1661903789690602,1.1704699910719627,1.1704699910719627,1.1704699910719627,1.1704699910719627,1.1704699910719627,1.1704699910719627,1.1704699910719627,1.1704699910719627,1.2000000000000002,1.2000000000000002,1.2000000000000002,1.2000000000000002,1.2041594578792296,1.2041594578792296,1.2041594578792296,1.2041594578792296,1.2041594578792296,1.2041594578792296,1.2041594578792296,1.2041594578792296,1.2041594578792296,1.2041594578792296,1.2041594578792296,1.2041594578792296,1.2041594578792296,1.2041594578792296,1.2041594578792296,1.2041594578792296,1.2083045973594573,1.2083045973594573,1.2083045973594573,1.2083045973594573,1.2083045973594573,1.2083045973594573,1.2083045973594573,1.2083045973594573,1.216552506059644,1.216552506059644,1.216552506059644,1.216552506059644,1.216552506059644,1.216552506059644,1.216552506059644,1.216552506059644,1.2206555615733703,1.2206555615733703,1.2206555615733703,1.2206555615733703,1.2206555615733703,1.2206555615733703,1.2206555615733703,1.2206555615733703,1.2369316876852983,1.2369316876852983,1.2369316876852983,1.2369316876852983,1.2369316876852983,1.2369316876852983,1.2369316876852983,1.2369316876852983,1.252996408614167,1.252996408614167,1.252996408614167,1.252996408614167,1.252996408614167,1.252996408614167,1.252996408614167,1.252996408614167,1.264911064067352,1.264911064067352,1.264911064067352,1.264911064067352,1.264911064067352,1.264911064067352,1.264911064067352,1.264911064067352,1.2727922061357857,1.2727922061357857,1.2727922061357857,1.2727922061357857,1.2806248474865698,1.2806248474865698,1.2806248474865698,1.2806248474865698,1.2806248474865698,1.2806248474865698,1.2806248474865698,1.2806248474865698,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.30384048104053,1.30384048104053,1.30384048104053,1.30384048104053,1.30384048104053,1.30384048104053,1.30384048104053,1.30384048104053,1.30384048104053,1.30384048104053,1.30384048104053,1.30384048104053,1.30384048104053,1.30384048104053,1.30384048104053,1.30384048104053,1.3152946437965907,1.3152946437965907,1.3152946437965907,1.3152946437965907,1.3152946437965907,1.3152946437965907,1.3152946437965907,1.3152946437965907,1.3341664064126335,1.3341664064126335,1.3341664064126335,1.3341664064126335,1.3341664064126335,1.3341664064126335,1.3341664064126335,1.3341664064126335,1.341640786499874,1.341640786499874,1.341640786499874,1.341640786499874,1.341640786499874,1.341640786499874,1.341640786499874,1.341640786499874,1.3453624047073711,1.3453624047073711,1.3453624047073711,1.3453624047073711,1.3453624047073711,1.3453624047073711,1.3453624047073711,1.3453624047073711,1.3601470508735445,1.3601470508735445,1.3601470508735445,1.3601470508735445,1.3601470508735445,1.3601470508735445,1.3601470508735445,1.3601470508735445,1.3601470508735445,1.3601470508735445,1.3601470508735445,1.3601470508735445,1.3601470508735445,1.3601470508735445,1.3601470508735445,1.3601470508735445,1.3892443989449805,1.3892443989449805,1.3892443989449805,1.3892443989449805,1.3892443989449805,1.3892443989449805,1.3892443989449805,1.3892443989449805,1.392838827718412,1.392838827718412,1.392838827718412,1.392838827718412,1.392838827718412,1.392838827718412,1.392838827718412,1.392838827718412,1.4000000000000001,1.4000000000000001,1.4000000000000001,1.4000000000000001,1.40356688476182,1.40356688476182,1.40356688476182,1.40356688476182,1.40356688476182,1.40356688476182,1.40356688476182,1.40356688476182,1.4142135623730951,1.4142135623730951,1.4142135623730951,1.4142135623730951,1.4142135623730951,1.4142135623730951,1.4142135623730951,1.4142135623730951,1.4142135623730951,1.4142135623730951,1.4142135623730951,1.4142135623730951,1.4212670403551897,1.4212670403551897,1.4212670403551897,1.4212670403551897,1.4212670403551897,1.4212670403551897,1.4212670403551897,1.4212670403551897,1.4317821063276355,1.4317821063276355,1.4317821063276355,1.4317821063276355,1.4317821063276355,1.4317821063276355,1.4317821063276355,1.4317821063276355,1.4317821063276355,1.4317821063276355,1.4317821063276355,1.4317821063276355,1.4317821063276355,1.4317821063276355,1.4317821063276355,1.4317821063276355,1.4422205101855958,1.4422205101855958,1.4422205101855958,1.4422205101855958,1.4422205101855958,1.4422205101855958,1.4422205101855958,1.4422205101855958,1.4560219778561037,1.4560219778561037,1.4560219778561037,1.4560219778561037,1.4560219778561037,1.4560219778561037,1.4560219778561037,1.4560219778561037,1.47648230602334,1.47648230602334,1.47648230602334,1.47648230602334,1.47648230602334,1.47648230602334,1.47648230602334,1.47648230602334,1.4866068747318506,1.4866068747318506,1.4866068747318506,1.4866068747318506,1.4866068747318506,1.4866068747318506,1.4866068747318506,1.4866068747318506,1.4866068747318506,1.4866068747318506,1.4866068747318506,1.4866068747318506,1.4866068747318506,1.4866068747318506,1.4866068747318506,1.4866068747318506,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.5,1.503329637837291,1.503329637837291,1.503329637837291,1.503329637837291,1.503329637837291,1.503329637837291,1.503329637837291,1.503329637837291,1.5132745950421558,1.5132745950421558,1.5132745950421558,1.5132745950421558,1.5132745950421558,1.5132745950421558,1.5132745950421558,1.5132745950421558,1.5231546211727818,1.5231546211727818,1.5231546211727818,1.5231546211727818,1.5231546211727818,1.5231546211727818,1.5231546211727818,1.5231546211727818,1.5264337522473748,1.5264337522473748,1.5264337522473748,1.5264337522473748,1.5264337522473748,1.5264337522473748,1.5264337522473748,1.5264337522473748,1.5297058540778357,1.5297058540778357,1.5297058540778357,1.5297058540778357,1.5297058540778357,1.5297058540778357,1.5297058540778357,1.5297058540778357,1.5524174696260025,1.5524174696260025,1.5524174696260025,1.5524174696260025,1.5524174696260025,1.5524174696260025,1.5524174696260025,1.5524174696260025,1.5556349186104046,1.5556349186104046,1.5556349186104046,1.5556349186104046,1.5620499351813308,1.5620499351813308,1.5620499351813308,1.5620499351813308,1.5620499351813308,1.5620499351813308,1.5620499351813308,1.5620499351813308,1.565247584249853,1.565247584249853,1.565247584249853,1.565247584249853,1.565247584249853,1.565247584249853,1.565247584249853,1.565247584249853,1.5811388300841898,1.5811388300841898,1.5811388300841898,1.5811388300841898,1.5811388300841898,1.5811388300841898,1.5811388300841898,1.5811388300841898,1.5811388300841898,1.5811388300841898,1.5811388300841898,1.5811388300841898,1.5811388300841898,1.5811388300841898,1.5811388300841898,1.5811388300841898,1.6,1.6,1.6,1.6,1.6031219541881399,1.6031219541881399,1.6031219541881399,1.6031219541881399,1.6031219541881399,1.6031219541881399,1.6031219541881399,1.6031219541881399,1.6124515496597098,1.6124515496597098,1.6124515496597098,1.6124515496597098,1.6124515496597098,1.6124515496597098,1.6124515496597098,1.6124515496597098,1.6124515496597098,1.6124515496597098,1.6124515496597098,1.6124515496597098,1.6124515496597098,1.6124515496597098,1.6124515496597098,1.6124515496597098,1.6155494421403511,1.6155494421403511,1.6155494421403511,1.6155494421403511,1.6155494421403511,1.6155494421403511,1.6155494421403511,1.6155494421403511,1.6278820596099708,1.6278820596099708,1.6278820596099708,1.6278820596099708,1.6278820596099708,1.6278820596099708,1.6278820596099708,1.6278820596099708,1.6278820596099708,1.6278820596099708,1.6278820596099708,1.6278820596099708,1.6278820596099708,1.6278820596099708,1.6278820596099708,1.6278820596099708,1.6401219466856727,1.6401219466856727,1.6401219466856727,1.6401219466856727,1.6401219466856727,1.6401219466856727,1.6401219466856727,1.6401219466856727,1.6492422502470643,1.6492422502470643,1.6492422502470643,1.6492422502470643,1.6492422502470643,1.6492422502470643,1.6492422502470643,1.6492422502470643,1.6552945357246849,1.6552945357246849,1.6552945357246849,1.6552945357246849,1.6552945357246849,1.6552945357246849,1.6552945357246849,1.6552945357246849,1.6643316977093239,1.6643316977093239,1.6643316977093239,1.6643316977093239,1.6643316977093239,1.6643316977093239,1.6643316977093239,1.6643316977093239,1.6763054614240211,1.6763054614240211,1.6763054614240211,1.6763054614240211,1.6763054614240211,1.6763054614240211,1.6763054614240211,1.6763054614240211,1.697056274847714,1.697056274847714,1.697056274847714,1.697056274847714,1.7000000000000002,1.7000000000000002,1.7000000000000002,1.7000000000000002,1.7000000000000002,1.7000000000000002,1.7000000000000002,1.7000000000000002,1.7000000000000002,1.7000000000000002,1.7000000000000002,1.7000000000000002,1.7029386365926404,1.7029386365926404,1.7029386365926404,1.7029386365926404,1.7029386365926404,1.7029386365926404,1.7029386365926404,1.7029386365926404,1.7029386365926404,1.7029386365926404,1.7029386365926404,1.7029386365926404,1.7029386365926404,1.7029386365926404,1.7029386365926404,1.7029386365926404,1.7088007490635062,1.7088007490635062,1.7088007490635062,1.7088007490635062,1.7088007490635062,1.7088007490635062,1.7088007490635062,1.7088007490635062,1.711724276862369,1.711724276862369,1.711724276862369,1.711724276862369,1.711724276862369,1.711724276862369,1.711724276862369,1.711724276862369,1.7204650534085255,1.7204650534085255,1.7204650534085255,1.7204650534085255,1.7204650534085255,1.7204650534085255,1.7204650534085255,1.7204650534085255,1.7262676501632068,1.7262676501632068,1.7262676501632068,1.7262676501632068,1.7262676501632068,1.7262676501632068,1.7262676501632068,1.7262676501632068,1.746424919657298,1.746424919657298,1.746424919657298,1.746424919657298,1.746424919657298,1.746424919657298,1.746424919657298,1.746424919657298,1.746424919657298,1.746424919657298,1.746424919657298,1.746424919657298,1.746424919657298,1.746424919657298,1.746424919657298,1.746424919657298,1.7492855684535902,1.7492855684535902,1.7492855684535902,1.7492855684535902,1.7492855684535902,1.7492855684535902,1.7492855684535902,1.7492855684535902,1.7691806012954132,1.7691806012954132,1.7691806012954132,1.7691806012954132,1.7691806012954132,1.7691806012954132,1.7691806012954132,1.7691806012954132,1.772004514666935,1.772004514666935,1.772004514666935,1.772004514666935,1.772004514666935,1.772004514666935,1.772004514666935,1.772004514666935,1.780449381476486,1.780449381476486,1.780449381476486,1.780449381476486,1.780449381476486,1.780449381476486,1.780449381476486,1.780449381476486,1.788854381999832,1.788854381999832,1.788854381999832,1.788854381999832,1.788854381999832,1.788854381999832,1.788854381999832,1.788854381999832,1.8,1.8,1.8,1.8,1.8027756377319948,1.8027756377319948,1.8027756377319948,1.8027756377319948,1.8027756377319948,1.8027756377319948,1.8027756377319948,1.8027756377319948,1.8027756377319948,1.8027756377319948,1.8027756377319948,1.8027756377319948,1.8027756377319948,1.8027756377319948,1.8027756377319948,1.8027756377319948,1.8027756377319948,1.8027756377319948,1.8027756377319948,1.8027756377319948,1.8027756377319948,1.8027756377319948,1.8027756377319948,1.8027756377319948,1.8110770276274835,1.8110770276274835,1.8110770276274835,1.8110770276274835,1.8110770276274835,1.8110770276274835,1.8110770276274835,1.8110770276274835,1.824828759089466,1.824828759089466,1.824828759089466,1.824828759089466,1.824828759089466,1.824828759089466,1.824828759089466,1.824828759089466,1.8357559750685821,1.8357559750685821,1.8357559750685821,1.8357559750685821,1.8357559750685821,1.8357559750685821,1.8357559750685821,1.8357559750685821,1.8384776310850235,1.8384776310850235,1.8384776310850235,1.8384776310850235,1.8384776310850235,1.8384776310850235,1.8384776310850235,1.8384776310850235,1.8384776310850235,1.8384776310850235,1.8384776310850235,1.8384776310850235,1.8439088914585775,1.8439088914585775,1.8439088914585775,1.8439088914585775,1.8439088914585775,1.8439088914585775,1.8439088914585775,1.8439088914585775,1.8439088914585775,1.8439088914585775,1.8439088914585775,1.8439088914585775,1.8439088914585775,1.8439088914585775,1.8439088914585775,1.8439088914585775,1.8601075237738276,1.8601075237738276,1.8601075237738276,1.8601075237738276,1.8601075237738276,1.8601075237738276,1.8601075237738276,1.8601075237738276,1.8681541692269406,1.8681541692269406,1.8681541692269406,1.8681541692269406,1.8681541692269406,1.8681541692269406,1.8681541692269406,1.8681541692269406,1.8788294228055937,1.8788294228055937,1.8788294228055937,1.8788294228055937,1.8788294228055937,1.8788294228055937,1.8788294228055937,1.8788294228055937,1.8867962264113207,1.8867962264113207,1.8867962264113207,1.8867962264113207,1.8867962264113207,1.8867962264113207,1.8867962264113207,1.8867962264113207,1.8973665961010278,1.8973665961010278,1.8973665961010278,1.8973665961010278,1.8973665961010278,1.8973665961010278,1.8973665961010278,1.8973665961010278,1.9000000000000001,1.9000000000000001,1.9000000000000001,1.9000000000000001,1.9026297590440446,1.9026297590440446,1.9026297590440446,1.9026297590440446,1.9026297590440446,1.9026297590440446,1.9026297590440446,1.9026297590440446,1.91049731745428,1.91049731745428,1.91049731745428,1.91049731745428,1.91049731745428,1.91049731745428,1.91049731745428,1.91049731745428,1.91049731745428,1.91049731745428,1.91049731745428,1.91049731745428,1.91049731745428,1.91049731745428,1.91049731745428,1.91049731745428,1.9209372712298547,1.9209372712298547,1.9209372712298547,1.9209372712298547,1.9209372712298547,1.9209372712298547,1.9209372712298547,1.9209372712298547,1.9235384061671343,1.9235384061671343,1.9235384061671343,1.9235384061671343,1.9235384061671343,1.9235384061671343,1.9235384061671343,1.9235384061671343,1.9235384061671343,1.9235384061671343,1.9235384061671343,1.9235384061671343,1.9235384061671343,1.9235384061671343,1.9235384061671343,1.9235384061671343,1.9313207915827968,1.9313207915827968,1.9313207915827968,1.9313207915827968,1.9313207915827968,1.9313207915827968,1.9313207915827968,1.9313207915827968,1.94164878389476,1.94164878389476,1.94164878389476,1.94164878389476,1.94164878389476,1.94164878389476,1.94164878389476,1.94164878389476,1.94164878389476,1.94164878389476,1.94164878389476,1.94164878389476,1.94164878389476,1.94164878389476,1.94164878389476,1.94164878389476,1.96468827043885,1.96468827043885,1.96468827043885,1.96468827043885,1.96468827043885,1.96468827043885,1.96468827043885,1.96468827043885,1.969771560359221,1.969771560359221,1.969771560359221,1.969771560359221,1.969771560359221,1.969771560359221,1.969771560359221,1.969771560359221,1.9723082923316022,1.9723082923316022,1.9723082923316022,1.9723082923316022,1.9723082923316022,1.9723082923316022,1.9723082923316022,1.9723082923316022,1.9798989873223332,1.9798989873223332,1.9798989873223332,1.9798989873223332,1.9849433241279208,1.9849433241279208,1.9849433241279208,1.9849433241279208,1.9849433241279208,1.9849433241279208,1.9849433241279208,1.9849433241279208,1.9924858845171276,1.9924858845171276,1.9924858845171276,1.9924858845171276,1.9924858845171276,1.9924858845171276,1.9924858845171276,1.9924858845171276,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0024984394500787,2.0024984394500787,2.0024984394500787,2.0024984394500787,2.0024984394500787,2.0024984394500787,2.0024984394500787,2.0024984394500787,2.009975124224178,2.009975124224178,2.009975124224178,2.009975124224178,2.009975124224178,2.009975124224178,2.009975124224178,2.009975124224178,2.012461179749811,2.012461179749811,2.012461179749811,2.012461179749811,2.012461179749811,2.012461179749811,2.012461179749811,2.012461179749811,2.0223748416156684,2.0223748416156684,2.0223748416156684,2.0223748416156684,2.0223748416156684,2.0223748416156684,2.0223748416156684,2.0223748416156684,2.024845673131659,2.024845673131659,2.024845673131659,2.024845673131659,2.024845673131659,2.024845673131659,2.024845673131659,2.024845673131659,2.024845673131659,2.024845673131659,2.024845673131659,2.024845673131659,2.024845673131659,2.024845673131659,2.024845673131659,2.024845673131659,2.039607805437114,2.039607805437114,2.039607805437114,2.039607805437114,2.039607805437114,2.039607805437114,2.039607805437114,2.039607805437114,2.0518284528683193,2.0518284528683193,2.0518284528683193,2.0518284528683193,2.0518284528683193,2.0518284528683193,2.0518284528683193,2.0518284528683193,2.0591260281974004,2.0591260281974004,2.0591260281974004,2.0591260281974004,2.0591260281974004,2.0591260281974004,2.0591260281974004,2.0591260281974004,2.0615528128088303,2.0615528128088303,2.0615528128088303,2.0615528128088303,2.0615528128088303,2.0615528128088303,2.0615528128088303,2.0615528128088303,2.0615528128088303,2.0615528128088303,2.0615528128088303,2.0615528128088303,2.0615528128088303,2.0615528128088303,2.0615528128088303,2.0615528128088303,2.0615528128088303,2.0615528128088303,2.0615528128088303,2.0615528128088303,2.0615528128088303,2.0615528128088303,2.0615528128088303,2.0615528128088303,2.0808652046684815,2.0808652046684815,2.0808652046684815,2.0808652046684815,2.0808652046684815,2.0808652046684815,2.0808652046684815,2.0808652046684815,2.08806130178211,2.08806130178211,2.08806130178211,2.08806130178211,2.08806130178211,2.08806130178211,2.08806130178211,2.08806130178211,2.1,2.1,2.1,2.1,2.102379604162864,2.102379604162864,2.102379604162864,2.102379604162864,2.102379604162864,2.102379604162864,2.102379604162864,2.102379604162864,2.102379604162864,2.102379604162864,2.102379604162864,2.102379604162864,2.102379604162864,2.102379604162864,2.102379604162864,2.102379604162864,2.109502310972899,2.109502310972899,2.109502310972899,2.109502310972899,2.109502310972899,2.109502310972899,2.109502310972899,2.109502310972899,2.109502310972899,2.109502310972899,2.109502310972899,2.109502310972899,2.109502310972899,2.109502310972899,2.109502310972899,2.109502310972899,2.118962010041709,2.118962010041709,2.118962010041709,2.118962010041709,2.118962010041709,2.118962010041709,2.118962010041709,2.118962010041709,2.121320343559643,2.121320343559643,2.121320343559643,2.121320343559643,2.121320343559643,2.121320343559643,2.121320343559643,2.121320343559643,2.121320343559643,2.121320343559643,2.121320343559643,2.121320343559643,2.12602916254693,2.12602916254693,2.12602916254693,2.12602916254693,2.12602916254693,2.12602916254693,2.12602916254693,2.12602916254693,2.137755832643195,2.137755832643195,2.137755832643195,2.137755832643195,2.137755832643195,2.137755832643195,2.137755832643195,2.137755832643195,2.1400934559032696,2.1400934559032696,2.1400934559032696,2.1400934559032696,2.1400934559032696,2.1400934559032696,2.1400934559032696,2.1400934559032696,2.147091055358389,2.147091055358389,2.147091055358389,2.147091055358389,2.147091055358389,2.147091055358389,2.147091055358389,2.147091055358389,2.1540659228538015,2.1540659228538015,2.1540659228538015,2.1540659228538015,2.1540659228538015,2.1540659228538015,2.1540659228538015,2.1540659228538015,2.1587033144922905,2.1587033144922905,2.1587033144922905,2.1587033144922905,2.1587033144922905,2.1587033144922905,2.1587033144922905,2.1587033144922905,2.1633307652783937,2.1633307652783937,2.1633307652783937,2.1633307652783937,2.1633307652783937,2.1633307652783937,2.1633307652783937,2.1633307652783937,2.1840329667841556,2.1840329667841556,2.1840329667841556,2.1840329667841556,2.1840329667841556,2.1840329667841556,2.1840329667841556,2.1840329667841556,2.193171219946131,2.193171219946131,2.193171219946131,2.193171219946131,2.193171219946131,2.193171219946131,2.193171219946131,2.193171219946131,2.193171219946131,2.193171219946131,2.193171219946131,2.193171219946131,2.193171219946131,2.193171219946131,2.193171219946131,2.193171219946131,2.195449840010015,2.195449840010015,2.195449840010015,2.195449840010015,2.195449840010015,2.195449840010015,2.195449840010015,2.195449840010015,2.2,2.2,2.2,2.2,2.202271554554524,2.202271554554524,2.202271554554524,2.202271554554524,2.202271554554524,2.202271554554524,2.202271554554524,2.202271554554524,2.202271554554524,2.202271554554524,2.202271554554524,2.202271554554524,2.202271554554524,2.202271554554524,2.202271554554524,2.202271554554524,2.209072203437452,2.209072203437452,2.209072203437452,2.209072203437452,2.209072203437452,2.209072203437452,2.209072203437452,2.209072203437452,2.2135943621178655,2.2135943621178655,2.2135943621178655,2.2135943621178655,2.2135943621178655,2.2135943621178655,2.2135943621178655,2.2135943621178655,2.220360331117452,2.220360331117452,2.220360331117452,2.220360331117452,2.220360331117452,2.220360331117452,2.220360331117452,2.220360331117452,2.220360331117452,2.220360331117452,2.220360331117452,2.220360331117452,2.220360331117452,2.220360331117452,2.220360331117452,2.220360331117452,2.23606797749979,2.23606797749979,2.23606797749979,2.23606797749979,2.23606797749979,2.23606797749979,2.23606797749979,2.23606797749979,2.23606797749979,2.23606797749979,2.23606797749979,2.23606797749979,2.23606797749979,2.23606797749979,2.23606797749979,2.23606797749979,2.247220505424423,2.247220505424423,2.247220505424423,2.247220505424423,2.247220505424423,2.247220505424423,2.247220505424423,2.247220505424423,2.247220505424423,2.247220505424423,2.247220505424423,2.247220505424423,2.247220505424423,2.247220505424423,2.247220505424423,2.247220505424423,2.2561028345356955,2.2561028345356955,2.2561028345356955,2.2561028345356955,2.2561028345356955,2.2561028345356955,2.2561028345356955,2.2561028345356955,2.2627416997969525,2.2627416997969525,2.2627416997969525,2.2627416997969525,2.267156809750927,2.267156809750927,2.267156809750927,2.267156809750927,2.267156809750927,2.267156809750927,2.267156809750927,2.267156809750927,2.280350850198276,2.280350850198276,2.280350850198276,2.280350850198276,2.280350850198276,2.280350850198276,2.280350850198276,2.280350850198276,2.280350850198276,2.280350850198276,2.280350850198276,2.280350850198276,2.280350850198276,2.280350850198276,2.280350850198276,2.280350850198276,2.2825424421026654,2.2825424421026654,2.2825424421026654,2.2825424421026654,2.2825424421026654,2.2825424421026654,2.2825424421026654,2.2825424421026654,2.2847319317591728,2.2847319317591728,2.2847319317591728,2.2847319317591728,2.2847319317591728,2.2847319317591728,2.2847319317591728,2.2847319317591728,2.3000000000000003,2.3000000000000003,2.3000000000000003,2.3000000000000003,2.3021728866442674,2.3021728866442674,2.3021728866442674,2.3021728866442674,2.3021728866442674,2.3021728866442674,2.3021728866442674,2.3021728866442674,2.3021728866442674,2.3021728866442674,2.3021728866442674,2.3021728866442674,2.3021728866442674,2.3021728866442674,2.3021728866442674,2.3021728866442674,2.3086792761230392,2.3086792761230392,2.3086792761230392,2.3086792761230392,2.3086792761230392,2.3086792761230392,2.3086792761230392,2.3086792761230392,2.3086792761230392,2.3086792761230392,2.3086792761230392,2.3086792761230392,2.3086792761230392,2.3086792761230392,2.3086792761230392,2.3086792761230392,2.3194827009486403,2.3194827009486403,2.3194827009486403,2.3194827009486403,2.3194827009486403,2.3194827009486403,2.3194827009486403,2.3194827009486403,2.3259406699226015,2.3259406699226015,2.3259406699226015,2.3259406699226015,2.3259406699226015,2.3259406699226015,2.3259406699226015,2.3259406699226015,2.3323807579381204,2.3323807579381204,2.3323807579381204,2.3323807579381204,2.3323807579381204,2.3323807579381204,2.3323807579381204,2.3323807579381204,2.3345235059857505,2.3345235059857505,2.3345235059857505,2.3345235059857505,2.3345235059857505,2.3345235059857505,2.3345235059857505,2.3345235059857505,2.3345235059857505,2.3345235059857505,2.3345235059857505,2.3345235059857505,2.3345235059857505,2.3345235059857505,2.3345235059857505,2.3345235059857505,2.3409399821439254,2.3409399821439254,2.3409399821439254,2.3409399821439254,2.3409399821439254,2.3409399821439254,2.3409399821439254,2.3409399821439254,2.3430749027719964,2.3430749027719964,2.3430749027719964,2.3430749027719964,2.3430749027719964,2.3430749027719964,2.3430749027719964,2.3430749027719964,2.353720459187964,2.353720459187964,2.353720459187964,2.353720459187964,2.353720459187964,2.353720459187964,2.353720459187964,2.353720459187964,2.3600847442411896,2.3600847442411896,2.3600847442411896,2.3600847442411896,2.3600847442411896,2.3600847442411896,2.3600847442411896,2.3600847442411896,2.3706539182259396,2.3706539182259396,2.3706539182259396,2.3706539182259396,2.3706539182259396,2.3706539182259396,2.3706539182259396,2.3706539182259396,2.3769728648009427,2.3769728648009427,2.3769728648009427,2.3769728648009427,2.3769728648009427,2.3769728648009427,2.3769728648009427,2.3769728648009427,2.3769728648009427,2.3769728648009427,2.3769728648009427,2.3769728648009427,2.3769728648009427,2.3769728648009427,2.3769728648009427,2.3769728648009427,2.3853720883753127,2.3853720883753127,2.3853720883753127,2.3853720883753127,2.3853720883753127,2.3853720883753127,2.3853720883753127,2.3853720883753127,2.4000000000000004,2.4000000000000004,2.4000000000000004,2.4000000000000004,2.4020824298928627,2.4020824298928627,2.4020824298928627,2.4020824298928627,2.4020824298928627,2.4020824298928627,2.4020824298928627,2.4020824298928627,2.4041630560342617,2.4041630560342617,2.4041630560342617,2.4041630560342617,2.4041630560342617,2.4041630560342617,2.4041630560342617,2.4041630560342617,2.4041630560342617,2.4041630560342617,2.4041630560342617,2.4041630560342617,2.4083189157584592,2.4083189157584592,2.4083189157584592,2.4083189157584592,2.4083189157584592,2.4083189157584592,2.4083189157584592,2.4083189157584592,2.4083189157584592,2.4083189157584592,2.4083189157584592,2.4083189157584592,2.4083189157584592,2.4083189157584592,2.4083189157584592,2.4083189157584592,2.4166091947189146,2.4166091947189146,2.4166091947189146,2.4166091947189146,2.4166091947189146,2.4166091947189146,2.4166091947189146,2.4166091947189146,2.4186773244895647,2.4186773244895647,2.4186773244895647,2.4186773244895647,2.4186773244895647,2.4186773244895647,2.4186773244895647,2.4186773244895647,2.4186773244895647,2.4186773244895647,2.4186773244895647,2.4186773244895647,2.4186773244895647,2.4186773244895647,2.4186773244895647,2.4186773244895647,2.420743687382041,2.420743687382041,2.420743687382041,2.420743687382041,2.420743687382041,2.420743687382041,2.420743687382041,2.420743687382041,2.433105012119288,2.433105012119288,2.433105012119288,2.433105012119288,2.433105012119288,2.433105012119288,2.433105012119288,2.433105012119288,2.4351591323771844,2.4351591323771844,2.4351591323771844,2.4351591323771844,2.4351591323771844,2.4351591323771844,2.4351591323771844,2.4351591323771844,2.4413111231467406,2.4413111231467406,2.4413111231467406,2.4413111231467406,2.4413111231467406,2.4413111231467406,2.4413111231467406,2.4413111231467406,2.451530134426253,2.451530134426253,2.451530134426253,2.451530134426253,2.451530134426253,2.451530134426253,2.451530134426253,2.451530134426253,2.459674775249769,2.459674775249769,2.459674775249769,2.459674775249769,2.459674775249769,2.459674775249769,2.459674775249769,2.459674775249769,2.4698178070456938,2.4698178070456938,2.4698178070456938,2.4698178070456938,2.4698178070456938,2.4698178070456938,2.4698178070456938,2.4698178070456938,2.4698178070456938,2.4698178070456938,2.4698178070456938,2.4698178070456938,2.4698178070456938,2.4698178070456938,2.4698178070456938,2.4698178070456938,2.4738633753705965,2.4738633753705965,2.4738633753705965,2.4738633753705965,2.4738633753705965,2.4738633753705965,2.4738633753705965,2.4738633753705965,2.4758836806279896,2.4758836806279896,2.4758836806279896,2.4758836806279896,2.4758836806279896,2.4758836806279896,2.4758836806279896,2.4758836806279896,2.4839484696748446,2.4839484696748446,2.4839484696748446,2.4839484696748446,2.4839484696748446,2.4839484696748446,2.4839484696748446,2.4839484696748446,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5019992006393608,2.5019992006393608,2.5019992006393608,2.5019992006393608,2.5019992006393608,2.5019992006393608,2.5019992006393608,2.5019992006393608,2.505992817228334,2.505992817228334,2.505992817228334,2.505992817228334,2.505992817228334,2.505992817228334,2.505992817228334,2.505992817228334,2.507987240796891,2.507987240796891,2.507987240796891,2.507987240796891,2.507987240796891,2.507987240796891,2.507987240796891,2.507987240796891,2.507987240796891,2.507987240796891,2.507987240796891,2.507987240796891,2.507987240796891,2.507987240796891,2.507987240796891,2.507987240796891,2.5179356624028344,2.5179356624028344,2.5179356624028344,2.5179356624028344,2.5179356624028344,2.5179356624028344,2.5179356624028344,2.5179356624028344,2.5238858928247927,2.5238858928247927,2.5238858928247927,2.5238858928247927,2.5238858928247927,2.5238858928247927,2.5238858928247927,2.5238858928247927,2.529822128134704,2.529822128134704,2.529822128134704,2.529822128134704,2.529822128134704,2.529822128134704,2.529822128134704,2.529822128134704,2.5317977802344327,2.5317977802344327,2.5317977802344327,2.5317977802344327,2.5317977802344327,2.5317977802344327,2.5317977802344327,2.5317977802344327,2.5455844122715714,2.5455844122715714,2.5455844122715714,2.5455844122715714,2.5495097567963927,2.5495097567963927,2.5495097567963927,2.5495097567963927,2.5495097567963927,2.5495097567963927,2.5495097567963927,2.5495097567963927,2.5495097567963927,2.5495097567963927,2.5495097567963927,2.5495097567963927,2.5495097567963927,2.5495097567963927,2.5495097567963927,2.5495097567963927,2.5495097567963927,2.5495097567963927,2.5495097567963927,2.5495097567963927,2.5495097567963927,2.5495097567963927,2.5495097567963927,2.5495097567963927,2.5553864678361276,2.5553864678361276,2.5553864678361276,2.5553864678361276,2.5553864678361276,2.5553864678361276,2.5553864678361276,2.5553864678361276,2.5612496949731396,2.5612496949731396,2.5612496949731396,2.5612496949731396,2.5612496949731396,2.5612496949731396,2.5612496949731396,2.5612496949731396,2.5632011235952596,2.5632011235952596,2.5632011235952596,2.5632011235952596,2.5632011235952596,2.5632011235952596,2.5632011235952596,2.5632011235952596,2.5709920264364885,2.5709920264364885,2.5709920264364885,2.5709920264364885,2.5709920264364885,2.5709920264364885,2.5709920264364885,2.5709920264364885,2.5806975801127883,2.5806975801127883,2.5806975801127883,2.5806975801127883,2.5806975801127883,2.5806975801127883,2.5806975801127883,2.5806975801127883,2.5942243542145693,2.5942243542145693,2.5942243542145693,2.5942243542145693,2.5942243542145693,2.5942243542145693,2.5942243542145693,2.5942243542145693,2.5961509971494343,2.5961509971494343,2.5961509971494343,2.5961509971494343,2.5961509971494343,2.5961509971494343,2.5961509971494343,2.5961509971494343,2.6,2.6,2.6,2.6,2.6,2.6,2.6,2.6,2.6,2.6,2.6,2.6,2.6019223662515376,2.6019223662515376,2.6019223662515376,2.6019223662515376,2.6019223662515376,2.6019223662515376,2.6019223662515376,2.6019223662515376,2.60768096208106,2.60768096208106,2.60768096208106,2.60768096208106,2.60768096208106,2.60768096208106,2.60768096208106,2.60768096208106,2.60768096208106,2.60768096208106,2.60768096208106,2.60768096208106,2.60768096208106,2.60768096208106,2.60768096208106,2.60768096208106,2.6172504656604803,2.6172504656604803,2.6172504656604803,2.6172504656604803,2.6172504656604803,2.6172504656604803,2.6172504656604803,2.6172504656604803,2.6172504656604803,2.6172504656604803,2.6172504656604803,2.6172504656604803,2.6172504656604803,2.6172504656604803,2.6172504656604803,2.6172504656604803,2.6248809496813377,2.6248809496813377,2.6248809496813377,2.6248809496813377,2.6248809496813377,2.6248809496813377,2.6248809496813377,2.6248809496813377,2.6248809496813377,2.6248809496813377,2.6248809496813377,2.6248809496813377,2.6248809496813377,2.6248809496813377,2.6248809496813377,2.6248809496813377,2.6305892875931813,2.6305892875931813,2.6305892875931813,2.6305892875931813,2.6305892875931813,2.6305892875931813,2.6305892875931813,2.6305892875931813,2.6400757564888173,2.6400757564888173,2.6400757564888173,2.6400757564888173,2.6400757564888173,2.6400757564888173,2.6400757564888173,2.6400757564888173,2.6400757564888173,2.6400757564888173,2.6400757564888173,2.6400757564888173,2.6400757564888173,2.6400757564888173,2.6400757564888173,2.6400757564888173,2.6419689627245813,2.6419689627245813,2.6419689627245813,2.6419689627245813,2.6419689627245813,2.6419689627245813,2.6419689627245813,2.6419689627245813,2.6476404589747453,2.6476404589747453,2.6476404589747453,2.6476404589747453,2.6476404589747453,2.6476404589747453,2.6476404589747453,2.6476404589747453,2.657066051117285,2.657066051117285,2.657066051117285,2.657066051117285,2.657066051117285,2.657066051117285,2.657066051117285,2.657066051117285,2.6627053911388696,2.6627053911388696,2.6627053911388696,2.6627053911388696,2.6627053911388696,2.6627053911388696,2.6627053911388696,2.6627053911388696,2.668332812825267,2.668332812825267,2.668332812825267,2.668332812825267,2.668332812825267,2.668332812825267,2.668332812825267,2.668332812825267,2.683281572999748,2.683281572999748,2.683281572999748,2.683281572999748,2.683281572999748,2.683281572999748,2.683281572999748,2.683281572999748,2.6870057685088806,2.6870057685088806,2.6870057685088806,2.6870057685088806,2.6907248094147422,2.6907248094147422,2.6907248094147422,2.6907248094147422,2.6907248094147422,2.6907248094147422,2.6907248094147422,2.6907248094147422,2.6925824035672523,2.6925824035672523,2.6925824035672523,2.6925824035672523,2.6925824035672523,2.6925824035672523,2.6925824035672523,2.6925824035672523,2.6925824035672523,2.6925824035672523,2.6925824035672523,2.6925824035672523,2.6925824035672523,2.6925824035672523,2.6925824035672523,2.6925824035672523,2.6925824035672523,2.6925824035672523,2.6925824035672523,2.6925824035672523,2.6925824035672523,2.6925824035672523,2.6925824035672523,2.6925824035672523,2.7,2.7,2.7,2.7,2.701851217221259,2.701851217221259,2.701851217221259,2.701851217221259,2.701851217221259,2.701851217221259,2.701851217221259,2.701851217221259,2.701851217221259,2.701851217221259,2.701851217221259,2.701851217221259,2.701851217221259,2.701851217221259,2.701851217221259,2.701851217221259,2.707397274136177,2.707397274136177,2.707397274136177,2.707397274136177,2.707397274136177,2.707397274136177,2.707397274136177,2.707397274136177,2.716615541441225,2.716615541441225,2.716615541441225,2.716615541441225,2.716615541441225,2.716615541441225,2.716615541441225,2.716615541441225,2.720294101747089,2.720294101747089,2.720294101747089,2.720294101747089,2.720294101747089,2.720294101747089,2.720294101747089,2.720294101747089,2.720294101747089,2.720294101747089,2.720294101747089,2.720294101747089,2.720294101747089,2.720294101747089,2.720294101747089,2.720294101747089,2.7294688127912363,2.7294688127912363,2.7294688127912363,2.7294688127912363,2.7294688127912363,2.7294688127912363,2.7294688127912363,2.7294688127912363,2.7294688127912363,2.7294688127912363,2.7294688127912363,2.7294688127912363,2.7294688127912363,2.7294688127912363,2.7294688127912363,2.7294688127912363,2.7313000567495327,2.7313000567495327,2.7313000567495327,2.7313000567495327,2.7313000567495327,2.7313000567495327,2.7313000567495327,2.7313000567495327,2.7459060435491964,2.7459060435491964,2.7459060435491964,2.7459060435491964,2.7459060435491964,2.7459060435491964,2.7459060435491964,2.7459060435491964,2.7459060435491964,2.7459060435491964,2.7459060435491964,2.7459060435491964,2.7459060435491964,2.7459060435491964,2.7459060435491964,2.7459060435491964,2.751363298439521,2.751363298439521,2.751363298439521,2.751363298439521,2.751363298439521,2.751363298439521,2.751363298439521,2.751363298439521,2.7586228448267445,2.7586228448267445,2.7586228448267445,2.7586228448267445,2.7586228448267445,2.7586228448267445,2.7586228448267445,2.7586228448267445,2.7658633371878665,2.7658633371878665,2.7658633371878665,2.7658633371878665,2.7658633371878665,2.7658633371878665,2.7658633371878665,2.7658633371878665,2.7658633371878665,2.7658633371878665,2.7658633371878665,2.7658633371878665,2.7658633371878665,2.7658633371878665,2.7658633371878665,2.7658633371878665,2.7730849247724096,2.7730849247724096,2.7730849247724096,2.7730849247724096,2.7730849247724096,2.7730849247724096,2.7730849247724096,2.7730849247724096,2.778488797889961,2.778488797889961,2.778488797889961,2.778488797889961,2.778488797889961,2.778488797889961,2.778488797889961,2.778488797889961,2.780287754891569,2.780287754891569,2.780287754891569,2.780287754891569,2.780287754891569,2.780287754891569,2.780287754891569,2.780287754891569,2.785677655436824,2.785677655436824,2.785677655436824,2.785677655436824,2.785677655436824,2.785677655436824,2.785677655436824,2.785677655436824,2.7892651361962706,2.7892651361962706,2.7892651361962706,2.7892651361962706,2.7892651361962706,2.7892651361962706,2.7892651361962706,2.7892651361962706,2.8000000000000003,2.8000000000000003,2.8000000000000003,2.8000000000000003,2.8017851452243803,2.8017851452243803,2.8017851452243803,2.8017851452243803,2.8017851452243803,2.8017851452243803,2.8017851452243803,2.8017851452243803,2.8017851452243803,2.8017851452243803,2.8017851452243803,2.8017851452243803,2.8017851452243803,2.8017851452243803,2.8017851452243803,2.8017851452243803,2.80713376952364,2.80713376952364,2.80713376952364,2.80713376952364,2.80713376952364,2.80713376952364,2.80713376952364,2.80713376952364,2.816025568065745,2.816025568065745,2.816025568065745,2.816025568065745,2.816025568065745,2.816025568065745,2.816025568065745,2.816025568065745,2.816025568065745,2.816025568065745,2.816025568065745,2.816025568065745,2.816025568065745,2.816025568065745,2.816025568065745,2.816025568065745,2.8178005607210745,2.8178005607210745,2.8178005607210745,2.8178005607210745,2.8178005607210745,2.8178005607210745,2.8178005607210745,2.8178005607210745,2.823118842698621,2.823118842698621,2.823118842698621,2.823118842698621,2.823118842698621,2.823118842698621,2.823118842698621,2.823118842698621,2.8284271247461903,2.8284271247461903,2.8284271247461903,2.8284271247461903,2.8284271247461903,2.8284271247461903,2.8284271247461903,2.8284271247461903,2.8284271247461903,2.8284271247461903,2.8284271247461903,2.8284271247461903,2.8301943396169813,2.8301943396169813,2.8301943396169813,2.8301943396169813,2.8301943396169813,2.8301943396169813,2.8301943396169813,2.8301943396169813,2.8319604517012595,2.8319604517012595,2.8319604517012595,2.8319604517012595,2.8319604517012595,2.8319604517012595,2.8319604517012595,2.8319604517012595,2.8425340807103794,2.8425340807103794,2.8425340807103794,2.8425340807103794,2.8425340807103794,2.8425340807103794,2.8425340807103794,2.8425340807103794,2.8442925306655784,2.8442925306655784,2.8442925306655784,2.8442925306655784,2.8442925306655784,2.8442925306655784,2.8442925306655784,2.8442925306655784,2.8460498941515415,2.8460498941515415,2.8460498941515415,2.8460498941515415,2.8460498941515415,2.8460498941515415,2.8460498941515415,2.8460498941515415,2.8600699292150185,2.8600699292150185,2.8600699292150185,2.8600699292150185,2.8600699292150185,2.8600699292150185,2.8600699292150185,2.8600699292150185,2.863564212655271,2.863564212655271,2.863564212655271,2.863564212655271,2.863564212655271,2.863564212655271,2.863564212655271,2.863564212655271,2.863564212655271,2.863564212655271,2.863564212655271,2.863564212655271,2.863564212655271,2.863564212655271,2.863564212655271,2.863564212655271,2.8653097563788807,2.8653097563788807,2.8653097563788807,2.8653097563788807,2.8653097563788807,2.8653097563788807,2.8653097563788807,2.8653097563788807,2.879236009777594,2.879236009777594,2.879236009777594,2.879236009777594,2.879236009777594,2.879236009777594,2.879236009777594,2.879236009777594,2.8844410203711917,2.8844410203711917,2.8844410203711917,2.8844410203711917,2.8844410203711917,2.8844410203711917,2.8844410203711917,2.8844410203711917,2.8861739379323623,2.8861739379323623,2.8861739379323623,2.8861739379323623,2.8861739379323623,2.8861739379323623,2.8861739379323623,2.8861739379323623,2.9000000000000004,2.9000000000000004,2.9000000000000004,2.9000000000000004,2.9000000000000004,2.9000000000000004,2.9000000000000004,2.9000000000000004,2.9000000000000004,2.9000000000000004,2.9000000000000004,2.9000000000000004,2.9017236257093817,2.9017236257093817,2.9017236257093817,2.9017236257093817,2.9017236257093817,2.9017236257093817,2.9017236257093817,2.9017236257093817,2.906888370749727,2.906888370749727,2.906888370749727,2.906888370749727,2.906888370749727,2.906888370749727,2.906888370749727,2.906888370749727,2.906888370749727,2.906888370749727,2.906888370749727,2.906888370749727,2.906888370749727,2.906888370749727,2.906888370749727,2.906888370749727,2.906888370749727,2.906888370749727,2.906888370749727,2.906888370749727,2.906888370749727,2.906888370749727,2.906888370749727,2.906888370749727,2.9120439557122073,2.9120439557122073,2.9120439557122073,2.9120439557122073,2.9120439557122073,2.9120439557122073,2.9120439557122073,2.9120439557122073,2.9154759474226504,2.9154759474226504,2.9154759474226504,2.9154759474226504,2.9154759474226504,2.9154759474226504,2.9154759474226504,2.9154759474226504,2.9154759474226504,2.9154759474226504,2.9154759474226504,2.9154759474226504,2.9154759474226504,2.9154759474226504,2.9154759474226504,2.9154759474226504,2.9154759474226504,2.9154759474226504,2.9154759474226504,2.9154759474226504,2.9154759474226504,2.9154759474226504,2.9154759474226504,2.9154759474226504,2.920616373302047,2.920616373302047,2.920616373302047,2.920616373302047,2.920616373302047,2.920616373302047,2.920616373302047,2.920616373302047,2.9274562336608896,2.9274562336608896,2.9274562336608896,2.9274562336608896,2.9274562336608896,2.9274562336608896,2.9274562336608896,2.9274562336608896,2.9410882339705484,2.9410882339705484,2.9410882339705484,2.9410882339705484,2.9410882339705484,2.9410882339705484,2.9410882339705484,2.9410882339705484,2.9410882339705484,2.9410882339705484,2.9410882339705484,2.9410882339705484,2.9410882339705484,2.9410882339705484,2.9410882339705484,2.9410882339705484,2.9427877939124323,2.9427877939124323,2.9427877939124323,2.9427877939124323,2.9427877939124323,2.9427877939124323,2.9427877939124323,2.9427877939124323,2.95296461204668,2.95296461204668,2.95296461204668,2.95296461204668,2.95296461204668,2.95296461204668,2.95296461204668,2.95296461204668,2.954657340538832,2.954657340538832,2.954657340538832,2.954657340538832,2.954657340538832,2.954657340538832,2.954657340538832,2.954657340538832,2.96141857899217,2.96141857899217,2.96141857899217,2.96141857899217,2.96141857899217,2.96141857899217,2.96141857899217,2.96141857899217,2.968164415931166,2.968164415931166,2.968164415931166,2.968164415931166,2.968164415931166,2.968164415931166,2.968164415931166,2.968164415931166,2.9698484809834995,2.9698484809834995,2.9698484809834995,2.9698484809834995,2.973213749463701,2.973213749463701,2.973213749463701,2.973213749463701,2.973213749463701,2.973213749463701,2.973213749463701,2.973213749463701,2.973213749463701,2.973213749463701,2.973213749463701,2.973213749463701,2.973213749463701,2.973213749463701,2.973213749463701,2.973213749463701,2.98328677803526,2.98328677803526,2.98328677803526,2.98328677803526,2.98328677803526,2.98328677803526,2.98328677803526,2.98328677803526,2.98328677803526,2.98328677803526,2.98328677803526,2.98328677803526,2.98328677803526,2.98328677803526,2.98328677803526,2.98328677803526,2.9966648127543394,2.9966648127543394,2.9966648127543394,2.9966648127543394,2.9966648127543394,2.9966648127543394,2.9966648127543394,2.9966648127543394,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.001666203960727,3.001666203960727,3.001666203960727,3.001666203960727,3.001666203960727,3.001666203960727,3.001666203960727,3.001666203960727,3.001666203960727,3.001666203960727,3.001666203960727,3.001666203960727,3.001666203960727,3.001666203960727,3.001666203960727,3.001666203960727,3.006659275674582,3.006659275674582,3.006659275674582,3.006659275674582,3.006659275674582,3.006659275674582,3.006659275674582,3.006659275674582,3.0083217912982647,3.0083217912982647,3.0083217912982647,3.0083217912982647,3.0083217912982647,3.0083217912982647,3.0083217912982647,3.0083217912982647,3.0083217912982647,3.0083217912982647,3.0083217912982647,3.0083217912982647,3.0083217912982647,3.0083217912982647,3.0083217912982647,3.0083217912982647,3.014962686336267,3.014962686336267,3.014962686336267,3.014962686336267,3.014962686336267,3.014962686336267,3.014962686336267,3.014962686336267,3.023243291566195,3.023243291566195,3.023243291566195,3.023243291566195,3.023243291566195,3.023243291566195,3.023243291566195,3.023243291566195,3.0265491900843116,3.0265491900843116,3.0265491900843116,3.0265491900843116,3.0265491900843116,3.0265491900843116,3.0265491900843116,3.0265491900843116,3.036445290137795,3.036445290137795,3.036445290137795,3.036445290137795,3.036445290137795,3.036445290137795,3.036445290137795,3.036445290137795,3.04138126514911,3.04138126514911,3.04138126514911,3.04138126514911,3.04138126514911,3.04138126514911,3.04138126514911,3.04138126514911,3.04138126514911,3.04138126514911,3.04138126514911,3.04138126514911,3.04138126514911,3.04138126514911,3.04138126514911,3.04138126514911,3.04138126514911,3.04138126514911,3.04138126514911,3.04138126514911,3.04138126514911,3.04138126514911,3.04138126514911,3.04138126514911,3.0463092423455636,3.0463092423455636,3.0463092423455636,3.0463092423455636,3.0463092423455636,3.0463092423455636,3.0463092423455636,3.0463092423455636,3.0479501308256345,3.0479501308256345,3.0479501308256345,3.0479501308256345,3.0479501308256345,3.0479501308256345,3.0479501308256345,3.0479501308256345,3.0528675044947495,3.0528675044947495,3.0528675044947495,3.0528675044947495,3.0528675044947495,3.0528675044947495,3.0528675044947495,3.0528675044947495,3.0594117081556713,3.0594117081556713,3.0594117081556713,3.0594117081556713,3.0594117081556713,3.0594117081556713,3.0594117081556713,3.0594117081556713,3.0610455730027937,3.0610455730027937,3.0610455730027937,3.0610455730027937,3.0610455730027937,3.0610455730027937,3.0610455730027937,3.0610455730027937,3.0675723300355937,3.0675723300355937,3.0675723300355937,3.0675723300355937,3.0675723300355937,3.0675723300355937,3.0675723300355937,3.0675723300355937,3.0805843601498726,3.0805843601498726,3.0805843601498726,3.0805843601498726,3.0805843601498726,3.0805843601498726,3.0805843601498726,3.0805843601498726,3.0805843601498726,3.0805843601498726,3.0805843601498726,3.0805843601498726,3.0805843601498726,3.0805843601498726,3.0805843601498726,3.0805843601498726,3.0870698080866266,3.0870698080866266,3.0870698080866266,3.0870698080866266,3.0870698080866266,3.0870698080866266,3.0870698080866266,3.0870698080866266,3.0886890422961004,3.0886890422961004,3.0886890422961004,3.0886890422961004,3.0886890422961004,3.0886890422961004,3.0886890422961004,3.0886890422961004,3.1,3.1,3.1,3.1,3.101612483854165,3.101612483854165,3.101612483854165,3.101612483854165,3.101612483854165,3.101612483854165,3.101612483854165,3.101612483854165,3.101612483854165,3.101612483854165,3.101612483854165,3.101612483854165,3.101612483854165,3.101612483854165,3.101612483854165,3.101612483854165,3.104834939252005,3.104834939252005,3.104834939252005,3.104834939252005,3.104834939252005,3.104834939252005,3.104834939252005,3.104834939252005,3.1064449134018135,3.1064449134018135,3.1064449134018135,3.1064449134018135,3.1064449134018135,3.1064449134018135,3.1064449134018135,3.1064449134018135,3.1064449134018135,3.1064449134018135,3.1064449134018135,3.1064449134018135,3.1064449134018135,3.1064449134018135,3.1064449134018135,3.1064449134018135,3.111269837220809,3.111269837220809,3.111269837220809,3.111269837220809,3.1144823004794873,3.1144823004794873,3.1144823004794873,3.1144823004794873,3.1144823004794873,3.1144823004794873,3.1144823004794873,3.1144823004794873,3.1144823004794873,3.1144823004794873,3.1144823004794873,3.1144823004794873,3.1144823004794873,3.1144823004794873,3.1144823004794873,3.1144823004794873,3.1240998703626617,3.1240998703626617,3.1240998703626617,3.1240998703626617,3.1240998703626617,3.1240998703626617,3.1240998703626617,3.1240998703626617,3.125699921617557,3.125699921617557,3.125699921617557,3.125699921617557,3.125699921617557,3.125699921617557,3.125699921617557,3.125699921617557,3.130495168499706,3.130495168499706,3.130495168499706,3.130495168499706,3.130495168499706,3.130495168499706,3.130495168499706,3.130495168499706,3.132091952673165,3.132091952673165,3.132091952673165,3.132091952673165,3.132091952673165,3.132091952673165,3.132091952673165,3.132091952673165,3.1384709652950433,3.1384709652950433,3.1384709652950433,3.1384709652950433,3.1384709652950433,3.1384709652950433,3.1384709652950433,3.1384709652950433,3.1384709652950433,3.1384709652950433,3.1384709652950433,3.1384709652950433,3.1384709652950433,3.1384709652950433,3.1384709652950433,3.1384709652950433,3.1400636936215167,3.1400636936215167,3.1400636936215167,3.1400636936215167,3.1400636936215167,3.1400636936215167,3.1400636936215167,3.1400636936215167,3.1400636936215167,3.1400636936215167,3.1400636936215167,3.1400636936215167,3.1400636936215167,3.1400636936215167,3.1400636936215167,3.1400636936215167,3.157530680769389,3.157530680769389,3.157530680769389,3.157530680769389,3.157530680769389,3.157530680769389,3.157530680769389,3.157530680769389,3.1622776601683795,3.1622776601683795,3.1622776601683795,3.1622776601683795,3.1622776601683795,3.1622776601683795,3.1622776601683795,3.1622776601683795,3.1622776601683795,3.1622776601683795,3.1622776601683795,3.1622776601683795,3.1622776601683795,3.1622776601683795,3.1622776601683795,3.1622776601683795,3.176476034853718,3.176476034853718,3.176476034853718,3.176476034853718,3.176476034853718,3.176476034853718,3.176476034853718,3.176476034853718,3.178049716414141,3.178049716414141,3.178049716414141,3.178049716414141,3.178049716414141,3.178049716414141,3.178049716414141,3.178049716414141,3.178049716414141,3.178049716414141,3.178049716414141,3.178049716414141,3.178049716414141,3.178049716414141,3.178049716414141,3.178049716414141,3.1827660925679098,3.1827660925679098,3.1827660925679098,3.1827660925679098,3.1827660925679098,3.1827660925679098,3.1827660925679098,3.1827660925679098,3.1890437438203953,3.1890437438203953,3.1890437438203953,3.1890437438203953,3.1890437438203953,3.1890437438203953,3.1890437438203953,3.1890437438203953,3.1906112267087634,3.1906112267087634,3.1906112267087634,3.1906112267087634,3.1906112267087634,3.1906112267087634,3.1906112267087634,3.1906112267087634,3.1953090617340916,3.1953090617340916,3.1953090617340916,3.1953090617340916,3.1953090617340916,3.1953090617340916,3.1953090617340916,3.1953090617340916,3.2,3.2,3.2,3.2,3.2015621187164243,3.2015621187164243,3.2015621187164243,3.2015621187164243,3.2015621187164243,3.2015621187164243,3.2015621187164243,3.2015621187164243,3.2015621187164243,3.2015621187164243,3.2015621187164243,3.2015621187164243,3.2015621187164243,3.2015621187164243,3.2015621187164243,3.2015621187164243,3.2015621187164243,3.2015621187164243,3.2015621187164243,3.2015621187164243,3.2015621187164243,3.2015621187164243,3.2015621187164243,3.2015621187164243,3.2062439083762797,3.2062439083762797,3.2062439083762797,3.2062439083762797,3.2062439083762797,3.2062439083762797,3.2062439083762797,3.2062439083762797,3.2140317359976396,3.2140317359976396,3.2140317359976396,3.2140317359976396,3.2140317359976396,3.2140317359976396,3.2140317359976396,3.2140317359976396,3.2202484376209237,3.2202484376209237,3.2202484376209237,3.2202484376209237,3.2202484376209237,3.2202484376209237,3.2202484376209237,3.2202484376209237,3.2202484376209237,3.2202484376209237,3.2202484376209237,3.2202484376209237,3.2202484376209237,3.2202484376209237,3.2202484376209237,3.2202484376209237,3.2249030993194197,3.2249030993194197,3.2249030993194197,3.2249030993194197,3.2249030993194197,3.2249030993194197,3.2249030993194197,3.2249030993194197,3.2249030993194197,3.2249030993194197,3.2249030993194197,3.2249030993194197,3.2249030993194197,3.2249030993194197,3.2249030993194197,3.2249030993194197,3.228002478313795,3.228002478313795,3.228002478313795,3.228002478313795,3.228002478313795,3.228002478313795,3.228002478313795,3.228002478313795,3.2310988842807022,3.2310988842807022,3.2310988842807022,3.2310988842807022,3.2310988842807022,3.2310988842807022,3.2310988842807022,3.2310988842807022,3.2388269481403293,3.2388269481403293,3.2388269481403293,3.2388269481403293,3.2388269481403293,3.2388269481403293,3.2388269481403293,3.2388269481403293,3.2449961479175906,3.2449961479175906,3.2449961479175906,3.2449961479175906,3.2449961479175906,3.2449961479175906,3.2449961479175906,3.2449961479175906,3.252691193458119,3.252691193458119,3.252691193458119,3.252691193458119,3.2557641192199416,3.2557641192199416,3.2557641192199416,3.2557641192199416,3.2557641192199416,3.2557641192199416,3.2557641192199416,3.2557641192199416,3.2557641192199416,3.2557641192199416,3.2557641192199416,3.2557641192199416,3.2557641192199416,3.2557641192199416,3.2557641192199416,3.2557641192199416,3.257299494980466,3.257299494980466,3.257299494980466,3.257299494980466,3.257299494980466,3.257299494980466,3.257299494980466,3.257299494980466,3.264965543462902,3.264965543462902,3.264965543462902,3.264965543462902,3.264965543462902,3.264965543462902,3.264965543462902,3.264965543462902,3.264965543462902,3.264965543462902,3.264965543462902,3.264965543462902,3.264965543462902,3.264965543462902,3.264965543462902,3.264965543462902,3.2695565448543635,3.2695565448543635,3.2695565448543635,3.2695565448543635,3.2695565448543635,3.2695565448543635,3.2695565448543635,3.2695565448543635,3.27566787083184,3.27566787083184,3.27566787083184,3.27566787083184,3.27566787083184,3.27566787083184,3.27566787083184,3.27566787083184,3.27566787083184,3.27566787083184,3.27566787083184,3.27566787083184,3.27566787083184,3.27566787083184,3.27566787083184,3.27566787083184,3.2802438933713454,3.2802438933713454,3.2802438933713454,3.2802438933713454,3.2802438933713454,3.2802438933713454,3.2802438933713454,3.2802438933713454,3.2893768406797053,3.2893768406797053,3.2893768406797053,3.2893768406797053,3.2893768406797053,3.2893768406797053,3.2893768406797053,3.2893768406797053,3.2984845004941286,3.2984845004941286,3.2984845004941286,3.2984845004941286,3.2984845004941286,3.2984845004941286,3.2984845004941286,3.2984845004941286,3.3000000000000003,3.3000000000000003,3.3000000000000003,3.3000000000000003,3.3015148038438356,3.3015148038438356,3.3015148038438356,3.3015148038438356,3.3015148038438356,3.3015148038438356,3.3015148038438356,3.3015148038438356,3.3015148038438356,3.3015148038438356,3.3015148038438356,3.3015148038438356,3.3015148038438356,3.3015148038438356,3.3015148038438356,3.3015148038438356,3.3060550509633084,3.3060550509633084,3.3060550509633084,3.3060550509633084,3.3060550509633084,3.3060550509633084,3.3060550509633084,3.3060550509633084,3.3105890714493698,3.3105890714493698,3.3105890714493698,3.3105890714493698,3.3105890714493698,3.3105890714493698,3.3105890714493698,3.3105890714493698,3.3120990323358392,3.3120990323358392,3.3120990323358392,3.3120990323358392,3.3120990323358392,3.3120990323358392,3.3120990323358392,3.3120990323358392,3.3136083051561784,3.3136083051561784,3.3136083051561784,3.3136083051561784,3.3136083051561784,3.3136083051561784,3.3136083051561784,3.3136083051561784,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3241540277189325,3.3286633954186478,3.3286633954186478,3.3286633954186478,3.3286633954186478,3.3286633954186478,3.3286633954186478,3.3286633954186478,3.3286633954186478,3.330165161069343,3.330165161069343,3.330165161069343,3.330165161069343,3.330165161069343,3.330165161069343,3.330165161069343,3.330165161069343,3.3376638536557275,3.3376638536557275,3.3376638536557275,3.3376638536557275,3.3376638536557275,3.3376638536557275,3.3376638536557275,3.3376638536557275,3.342154993413681,3.342154993413681,3.342154993413681,3.342154993413681,3.342154993413681,3.342154993413681,3.342154993413681,3.342154993413681,3.3526109228480423,3.3526109228480423,3.3526109228480423,3.3526109228480423,3.3526109228480423,3.3526109228480423,3.3526109228480423,3.3526109228480423,3.3541019662496847,3.3541019662496847,3.3541019662496847,3.3541019662496847,3.3541019662496847,3.3541019662496847,3.3541019662496847,3.3541019662496847,3.3541019662496847,3.3541019662496847,3.3541019662496847,3.3541019662496847,3.3541019662496847,3.3541019662496847,3.3541019662496847,3.3541019662496847,3.3600595232822883,3.3600595232822883,3.3600595232822883,3.3600595232822883,3.3600595232822883,3.3600595232822883,3.3600595232822883,3.3600595232822883,3.361547262794322,3.361547262794322,3.361547262794322,3.361547262794322,3.361547262794322,3.361547262794322,3.361547262794322,3.361547262794322,3.361547262794322,3.361547262794322,3.361547262794322,3.361547262794322,3.361547262794322,3.361547262794322,3.361547262794322,3.361547262794322,3.3734255586866,3.3734255586866,3.3734255586866,3.3734255586866,3.3734255586866,3.3734255586866,3.3734255586866,3.3734255586866,3.3837848631377265,3.3837848631377265,3.3837848631377265,3.3837848631377265,3.3837848631377265,3.3837848631377265,3.3837848631377265,3.3837848631377265,3.3837848631377265,3.3837848631377265,3.3837848631377265,3.3837848631377265,3.3837848631377265,3.3837848631377265,3.3837848631377265,3.3837848631377265,3.394112549695428,3.394112549695428,3.394112549695428,3.394112549695428,3.3955853692699294,3.3955853692699294,3.3955853692699294,3.3955853692699294,3.3955853692699294,3.3955853692699294,3.3955853692699294,3.3955853692699294,3.3970575502926064,3.3970575502926064,3.3970575502926064,3.3970575502926064,3.3970575502926064,3.3970575502926064,3.3970575502926064,3.3970575502926064,3.4000000000000004,3.4000000000000004,3.4000000000000004,3.4000000000000004,3.4000000000000004,3.4000000000000004,3.4000000000000004,3.4000000000000004,3.4000000000000004,3.4000000000000004,3.4000000000000004,3.4000000000000004,3.40147027033899,3.40147027033899,3.40147027033899,3.40147027033899,3.40147027033899,3.40147027033899,3.40147027033899,3.40147027033899,3.40147027033899,3.40147027033899,3.40147027033899,3.40147027033899,3.40147027033899,3.40147027033899,3.40147027033899,3.40147027033899,3.405877273185281,3.405877273185281,3.405877273185281,3.405877273185281,3.405877273185281,3.405877273185281,3.405877273185281,3.405877273185281,3.405877273185281,3.405877273185281,3.405877273185281,3.405877273185281,3.405877273185281,3.405877273185281,3.405877273185281,3.405877273185281,3.4132096331752027,3.4132096331752027,3.4132096331752027,3.4132096331752027,3.4132096331752027,3.4132096331752027,3.4132096331752027,3.4132096331752027,3.4132096331752027,3.4132096331752027,3.4132096331752027,3.4132096331752027,3.4132096331752027,3.4132096331752027,3.4132096331752027,3.4132096331752027,3.4176014981270124,3.4176014981270124,3.4176014981270124,3.4176014981270124,3.4176014981270124,3.4176014981270124,3.4176014981270124,3.4176014981270124,3.4205262752974144,3.4205262752974144,3.4205262752974144,3.4205262752974144,3.4205262752974144,3.4205262752974144,3.4205262752974144,3.4205262752974144,3.4205262752974144,3.4205262752974144,3.4205262752974144,3.4205262752974144,3.4205262752974144,3.4205262752974144,3.4205262752974144,3.4205262752974144,3.423448553724738,3.423448553724738,3.423448553724738,3.423448553724738,3.423448553724738,3.423448553724738,3.423448553724738,3.423448553724738,3.4365680554879163,3.4365680554879163,3.4365680554879163,3.4365680554879163,3.4365680554879163,3.4365680554879163,3.4365680554879163,3.4365680554879163,3.440930106817051,3.440930106817051,3.440930106817051,3.440930106817051,3.440930106817051,3.440930106817051,3.440930106817051,3.440930106817051,3.4438350715445125,3.4438350715445125,3.4438350715445125,3.4438350715445125,3.4438350715445125,3.4438350715445125,3.4438350715445125,3.4438350715445125,3.4481879299133333,3.4481879299133333,3.4481879299133333,3.4481879299133333,3.4481879299133333,3.4481879299133333,3.4481879299133333,3.4481879299133333,3.4481879299133333,3.4481879299133333,3.4481879299133333,3.4481879299133333,3.4481879299133333,3.4481879299133333,3.4481879299133333,3.4481879299133333,3.4525353003264136,3.4525353003264136,3.4525353003264136,3.4525353003264136,3.4525353003264136,3.4525353003264136,3.4525353003264136,3.4525353003264136,3.4539832078341086,3.4539832078341086,3.4539832078341086,3.4539832078341086,3.4539832078341086,3.4539832078341086,3.4539832078341086,3.4539832078341086,3.465544690232692,3.465544690232692,3.465544690232692,3.465544690232692,3.465544690232692,3.465544690232692,3.465544690232692,3.465544690232692,3.4669871646719432,3.4669871646719432,3.4669871646719432,3.4669871646719432,3.4669871646719432,3.4669871646719432,3.4669871646719432,3.4669871646719432,3.471310991541957,3.471310991541957,3.471310991541957,3.471310991541957,3.471310991541957,3.471310991541957,3.471310991541957,3.471310991541957,3.471310991541957,3.471310991541957,3.471310991541957,3.471310991541957,3.471310991541957,3.471310991541957,3.471310991541957,3.471310991541957,3.4785054261852175,3.4785054261852175,3.4785054261852175,3.4785054261852175,3.4785054261852175,3.4785054261852175,3.4785054261852175,3.4785054261852175,3.4828149534536,3.4828149534536,3.4828149534536,3.4828149534536,3.4828149534536,3.4828149534536,3.4828149534536,3.4828149534536,3.488552708502482,3.488552708502482,3.488552708502482,3.488552708502482,3.488552708502482,3.488552708502482,3.488552708502482,3.488552708502482,3.492849839314596,3.492849839314596,3.492849839314596,3.492849839314596,3.492849839314596,3.492849839314596,3.492849839314596,3.492849839314596,3.492849839314596,3.492849839314596,3.492849839314596,3.492849839314596,3.492849839314596,3.492849839314596,3.492849839314596,3.492849839314596,3.4985711369071804,3.4985711369071804,3.4985711369071804,3.4985711369071804,3.4985711369071804,3.4985711369071804,3.4985711369071804,3.4985711369071804,3.5,3.5,3.5,3.5,3.5,3.5,3.5,3.5,3.5,3.5,3.5,3.5,3.5014282800023198,3.5014282800023198,3.5014282800023198,3.5014282800023198,3.5014282800023198,3.5014282800023198,3.5014282800023198,3.5014282800023198,3.505709628591621,3.505709628591621,3.505709628591621,3.505709628591621,3.505709628591621,3.505709628591621,3.505709628591621,3.505709628591621,3.511409973215888,3.511409973215888,3.511409973215888,3.511409973215888,3.511409973215888,3.511409973215888,3.511409973215888,3.511409973215888,3.5128336140500593,3.5128336140500593,3.5128336140500593,3.5128336140500593,3.5128336140500593,3.5128336140500593,3.5128336140500593,3.5128336140500593,3.517101079013795,3.517101079013795,3.517101079013795,3.517101079013795,3.517101079013795,3.517101079013795,3.517101079013795,3.517101079013795,3.522782990761707,3.522782990761707,3.522782990761707,3.522782990761707,3.522782990761707,3.522782990761707,3.522782990761707,3.522782990761707,3.522782990761707,3.522782990761707,3.522782990761707,3.522782990761707,3.522782990761707,3.522782990761707,3.522782990761707,3.522782990761707,3.5341194094144583,3.5341194094144583,3.5341194094144583,3.5341194094144583,3.5341194094144583,3.5341194094144583,3.5341194094144583,3.5341194094144583,3.5355339059327378,3.5355339059327378,3.5355339059327378,3.5355339059327378,3.5355339059327378,3.5355339059327378,3.5355339059327378,3.5355339059327378,3.5355339059327378,3.5355339059327378,3.5355339059327378,3.5355339059327378,3.5355339059327378,3.5355339059327378,3.5355339059327378,3.5355339059327378,3.5355339059327378,3.5355339059327378,3.5355339059327378,3.5355339059327378,3.5383612025908264,3.5383612025908264,3.5383612025908264,3.5383612025908264,3.5383612025908264,3.5383612025908264,3.5383612025908264,3.5383612025908264,3.54400902933387,3.54400902933387,3.54400902933387,3.54400902933387,3.54400902933387,3.54400902933387,3.54400902933387,3.54400902933387,3.54682957019364,3.54682957019364,3.54682957019364,3.54682957019364,3.54682957019364,3.54682957019364,3.54682957019364,3.54682957019364,3.54682957019364,3.54682957019364,3.54682957019364,3.54682957019364,3.54682957019364,3.54682957019364,3.54682957019364,3.54682957019364,3.5510561809129406,3.5510561809129406,3.5510561809129406,3.5510561809129406,3.5510561809129406,3.5510561809129406,3.5510561809129406,3.5510561809129406,3.5510561809129406,3.5510561809129406,3.5510561809129406,3.5510561809129406,3.5510561809129406,3.5510561809129406,3.5510561809129406,3.5510561809129406,3.560898762952972,3.560898762952972,3.560898762952972,3.560898762952972,3.560898762952972,3.560898762952972,3.560898762952972,3.560898762952972,3.56931365951495,3.56931365951495,3.56931365951495,3.56931365951495,3.56931365951495,3.56931365951495,3.56931365951495,3.56931365951495,3.5735136770411273,3.5735136770411273,3.5735136770411273,3.5735136770411273,3.5735136770411273,3.5735136770411273,3.5735136770411273,3.5735136770411273,3.577708763999664,3.577708763999664,3.577708763999664,3.577708763999664,3.577708763999664,3.577708763999664,3.577708763999664,3.577708763999664,3.5805027579936315,3.5805027579936315,3.5805027579936315,3.5805027579936315,3.5805027579936315,3.5805027579936315,3.5805027579936315,3.5805027579936315,3.5846896657869842,3.5846896657869842,3.5846896657869842,3.5846896657869842,3.5846896657869842,3.5846896657869842,3.5846896657869842,3.5846896657869842,3.5846896657869842,3.5846896657869842,3.5846896657869842,3.5846896657869842,3.5846896657869842,3.5846896657869842,3.5846896657869842,3.5846896657869842,3.590264614203248,3.590264614203248,3.590264614203248,3.590264614203248,3.590264614203248,3.590264614203248,3.590264614203248,3.590264614203248,3.6,3.6,3.6,3.6,3.6013886210738217,3.6013886210738217,3.6013886210738217,3.6013886210738217,3.6013886210738217,3.6013886210738217,3.6013886210738217,3.6013886210738217,3.6055512754639896,3.6055512754639896,3.6055512754639896,3.6055512754639896,3.6055512754639896,3.6055512754639896,3.6055512754639896,3.6055512754639896,3.6055512754639896,3.6055512754639896,3.6055512754639896,3.6055512754639896,3.6055512754639896,3.6055512754639896,3.6055512754639896,3.6055512754639896,3.6055512754639896,3.6055512754639896,3.6055512754639896,3.6055512754639896,3.6055512754639896,3.6055512754639896,3.6055512754639896,3.6055512754639896,3.6069377593742864,3.6069377593742864,3.6069377593742864,3.6069377593742864,3.6069377593742864,3.6069377593742864,3.6069377593742864,3.6069377593742864,3.6124783736376886,3.6124783736376886,3.6124783736376886,3.6124783736376886,3.6124783736376886,3.6124783736376886,3.6124783736376886,3.6124783736376886,3.6124783736376886,3.6124783736376886,3.6124783736376886,3.6124783736376886,3.6124783736376886,3.6124783736376886,3.6124783736376886,3.6124783736376886,3.6138621999185307,3.6138621999185307,3.6138621999185307,3.6138621999185307,3.6138621999185307,3.6138621999185307,3.6138621999185307,3.6138621999185307,3.622154055254967,3.622154055254967,3.622154055254967,3.622154055254967,3.622154055254967,3.622154055254967,3.622154055254967,3.622154055254967,3.623534186398688,3.623534186398688,3.623534186398688,3.623534186398688,3.623534186398688,3.623534186398688,3.623534186398688,3.623534186398688,3.623534186398688,3.623534186398688,3.623534186398688,3.623534186398688,3.623534186398688,3.623534186398688,3.623534186398688,3.623534186398688,3.624913792078372,3.624913792078372,3.624913792078372,3.624913792078372,3.624913792078372,3.624913792078372,3.624913792078372,3.624913792078372,3.6345563690772495,3.6345563690772495,3.6345563690772495,3.6345563690772495,3.6345563690772495,3.6345563690772495,3.6345563690772495,3.6345563690772495,3.635931792539569,3.635931792539569,3.635931792539569,3.635931792539569,3.635931792539569,3.635931792539569,3.635931792539569,3.635931792539569,3.6400549446402595,3.6400549446402595,3.6400549446402595,3.6400549446402595,3.6400549446402595,3.6400549446402595,3.6400549446402595,3.6400549446402595,3.6400549446402595,3.6400549446402595,3.6400549446402595,3.6400549446402595,3.6400549446402595,3.6400549446402595,3.6400549446402595,3.6400549446402595,3.6400549446402595,3.6400549446402595,3.6400549446402595,3.6400549446402595,3.6400549446402595,3.6400549446402595,3.6400549446402595,3.6400549446402595,3.649657518178932,3.649657518178932,3.649657518178932,3.649657518178932,3.649657518178932,3.649657518178932,3.649657518178932,3.649657518178932,3.6619666847201113,3.6619666847201113,3.6619666847201113,3.6619666847201113,3.6619666847201113,3.6619666847201113,3.6619666847201113,3.6619666847201113,3.66742416417845,3.66742416417845,3.66742416417845,3.66742416417845,3.66742416417845,3.66742416417845,3.66742416417845,3.66742416417845,3.66742416417845,3.66742416417845,3.66742416417845,3.66742416417845,3.66742416417845,3.66742416417845,3.66742416417845,3.66742416417845,3.6687872655688283,3.6687872655688283,3.6687872655688283,3.6687872655688283,3.6687872655688283,3.6687872655688283,3.6687872655688283,3.6687872655688283,3.6715119501371642,3.6715119501371642,3.6715119501371642,3.6715119501371642,3.6715119501371642,3.6715119501371642,3.6715119501371642,3.6715119501371642,3.676955262170047,3.676955262170047,3.676955262170047,3.676955262170047,3.676955262170047,3.676955262170047,3.676955262170047,3.676955262170047,3.676955262170047,3.676955262170047,3.676955262170047,3.676955262170047,3.6796738985948196,3.6796738985948196,3.6796738985948196,3.6796738985948196,3.6796738985948196,3.6796738985948196,3.6796738985948196,3.6796738985948196,3.687817782917155,3.687817782917155,3.687817782917155,3.687817782917155,3.687817782917155,3.687817782917155,3.687817782917155,3.687817782917155,3.687817782917155,3.687817782917155,3.687817782917155,3.687817782917155,3.687817782917155,3.687817782917155,3.687817782917155,3.687817782917155,3.6891733491393435,3.6891733491393435,3.6891733491393435,3.6891733491393435,3.6891733491393435,3.6891733491393435,3.6891733491393435,3.6891733491393435,3.7,3.7,3.7,3.7,3.7,3.7,3.7,3.7,3.7,3.7,3.7,3.7,3.7013511046643495,3.7013511046643495,3.7013511046643495,3.7013511046643495,3.7013511046643495,3.7013511046643495,3.7013511046643495,3.7013511046643495,3.7013511046643495,3.7013511046643495,3.7013511046643495,3.7013511046643495,3.7013511046643495,3.7013511046643495,3.7013511046643495,3.7013511046643495,3.7054014627297813,3.7054014627297813,3.7054014627297813,3.7054014627297813,3.7054014627297813,3.7054014627297813,3.7054014627297813,3.7054014627297813,3.710795063055895,3.710795063055895,3.710795063055895,3.710795063055895,3.710795063055895,3.710795063055895,3.710795063055895,3.710795063055895,3.712142238654117,3.712142238654117,3.712142238654117,3.712142238654117,3.712142238654117,3.712142238654117,3.712142238654117,3.712142238654117,3.712142238654117,3.712142238654117,3.712142238654117,3.712142238654117,3.712142238654117,3.712142238654117,3.712142238654117,3.712142238654117,3.716180835212409,3.716180835212409,3.716180835212409,3.716180835212409,3.716180835212409,3.716180835212409,3.716180835212409,3.716180835212409,3.720215047547655,3.720215047547655,3.720215047547655,3.720215047547655,3.720215047547655,3.720215047547655,3.720215047547655,3.720215047547655,3.721558813185679,3.721558813185679,3.721558813185679,3.721558813185679,3.721558813185679,3.721558813185679,3.721558813185679,3.721558813185679,3.721558813185679,3.721558813185679,3.721558813185679,3.721558813185679,3.721558813185679,3.721558813185679,3.721558813185679,3.721558813185679,3.7336309405188945,3.7336309405188945,3.7336309405188945,3.7336309405188945,3.7336309405188945,3.7336309405188945,3.7336309405188945,3.7336309405188945,3.7336309405188945,3.7336309405188945,3.7336309405188945,3.7336309405188945,3.7336309405188945,3.7336309405188945,3.7336309405188945,3.7336309405188945,3.736308338453881,3.736308338453881,3.736308338453881,3.736308338453881,3.736308338453881,3.736308338453881,3.736308338453881,3.736308338453881,3.7443290453698115,3.7443290453698115,3.7443290453698115,3.7443290453698115,3.7443290453698115,3.7443290453698115,3.7443290453698115,3.7443290453698115,3.748332962798263,3.748332962798263,3.748332962798263,3.748332962798263,3.748332962798263,3.748332962798263,3.748332962798263,3.748332962798263,3.748332962798263,3.748332962798263,3.748332962798263,3.748332962798263,3.748332962798263,3.748332962798263,3.748332962798263,3.748332962798263,3.753664875824692,3.753664875824692,3.753664875824692,3.753664875824692,3.753664875824692,3.753664875824692,3.753664875824692,3.753664875824692,3.7576588456111875,3.7576588456111875,3.7576588456111875,3.7576588456111875,3.7576588456111875,3.7576588456111875,3.7576588456111875,3.7576588456111875,3.7589892258425004,3.7589892258425004,3.7589892258425004,3.7589892258425004,3.7589892258425004,3.7589892258425004,3.7589892258425004,3.7589892258425004,3.7643060449437424,3.7643060449437424,3.7643060449437424,3.7643060449437424,3.7643060449437424,3.7643060449437424,3.7643060449437424,3.7643060449437424,3.7643060449437424,3.7643060449437424,3.7643060449437424,3.7643060449437424,3.7643060449437424,3.7643060449437424,3.7643060449437424,3.7643060449437424,3.7656340767525465,3.7656340767525465,3.7656340767525465,3.7656340767525465,3.7656340767525465,3.7656340767525465,3.7656340767525465,3.7656340767525465,3.769615364994153,3.769615364994153,3.769615364994153,3.769615364994153,3.769615364994153,3.769615364994153,3.769615364994153,3.769615364994153,3.7735924528226414,3.7735924528226414,3.7735924528226414,3.7735924528226414,3.7735924528226414,3.7735924528226414,3.7735924528226414,3.7735924528226414,3.78021163428716,3.78021163428716,3.78021163428716,3.78021163428716,3.78021163428716,3.78021163428716,3.78021163428716,3.78021163428716,3.78549864614954,3.78549864614954,3.78549864614954,3.78549864614954,3.78549864614954,3.78549864614954,3.78549864614954,3.78549864614954,3.7947331922020555,3.7947331922020555,3.7947331922020555,3.7947331922020555,3.7947331922020555,3.7947331922020555,3.7947331922020555,3.7947331922020555,3.8000000000000003,3.8000000000000003,3.8000000000000003,3.8000000000000003,3.8013155617496426,3.8013155617496426,3.8013155617496426,3.8013155617496426,3.8013155617496426,3.8013155617496426,3.8013155617496426,3.8013155617496426,3.8013155617496426,3.8013155617496426,3.8013155617496426,3.8013155617496426,3.8013155617496426,3.8013155617496426,3.8013155617496426,3.8013155617496426,3.8013155617496426,3.8013155617496426,3.8013155617496426,3.8013155617496426,3.8013155617496426,3.8013155617496426,3.8013155617496426,3.8013155617496426,3.8052595180880893,3.8052595180880893,3.8052595180880893,3.8052595180880893,3.8052595180880893,3.8052595180880893,3.8052595180880893,3.8052595180880893,3.8078865529319543,3.8078865529319543,3.8078865529319543,3.8078865529319543,3.8078865529319543,3.8078865529319543,3.8078865529319543,3.8078865529319543,3.8078865529319543,3.8078865529319543,3.8078865529319543,3.8078865529319543,3.8078865529319543,3.8078865529319543,3.8078865529319543,3.8078865529319543,3.8078865529319543,3.8078865529319543,3.8078865529319543,3.8078865529319543,3.8078865529319543,3.8078865529319543,3.8078865529319543,3.8078865529319543,3.811823710509184,3.811823710509184,3.811823710509184,3.811823710509184,3.811823710509184,3.811823710509184,3.811823710509184,3.811823710509184,3.818376618407357,3.818376618407357,3.818376618407357,3.818376618407357,3.82099463490856,3.82099463490856,3.82099463490856,3.82099463490856,3.82099463490856,3.82099463490856,3.82099463490856,3.82099463490856,3.82099463490856,3.82099463490856,3.82099463490856,3.82099463490856,3.82099463490856,3.82099463490856,3.82099463490856,3.82099463490856,3.827531841800928,3.827531841800928,3.827531841800928,3.827531841800928,3.827531841800928,3.827531841800928,3.827531841800928,3.827531841800928,3.827531841800928,3.827531841800928,3.827531841800928,3.827531841800928,3.827531841800928,3.827531841800928,3.827531841800928,3.827531841800928,3.8288379438153295,3.8288379438153295,3.8288379438153295,3.8288379438153295,3.8288379438153295,3.8288379438153295,3.8288379438153295,3.8288379438153295,3.83275357934736,3.83275357934736,3.83275357934736,3.83275357934736,3.83275357934736,3.83275357934736,3.83275357934736,3.83275357934736,3.83275357934736,3.83275357934736,3.83275357934736,3.83275357934736,3.83275357934736,3.83275357934736,3.83275357934736,3.83275357934736,3.8418745424597094,3.8418745424597094,3.8418745424597094,3.8418745424597094,3.8418745424597094,3.8418745424597094,3.8418745424597094,3.8418745424597094,3.8470768123342687,3.8470768123342687,3.8470768123342687,3.8470768123342687,3.8470768123342687,3.8470768123342687,3.8470768123342687,3.8470768123342687,3.8470768123342687,3.8470768123342687,3.8470768123342687,3.8470768123342687,3.8470768123342687,3.8470768123342687,3.8470768123342687,3.8470768123342687,3.8483762809787714,3.8483762809787714,3.8483762809787714,3.8483762809787714,3.8483762809787714,3.8483762809787714,3.8483762809787714,3.8483762809787714,3.858756276314948,3.858756276314948,3.858756276314948,3.858756276314948,3.858756276314948,3.858756276314948,3.858756276314948,3.858756276314948,3.8600518131237567,3.8600518131237567,3.8600518131237567,3.8600518131237567,3.8600518131237567,3.8600518131237567,3.8600518131237567,3.8600518131237567,3.8600518131237567,3.8600518131237567,3.8600518131237567,3.8600518131237567,3.8600518131237567,3.8600518131237567,3.8600518131237567,3.8600518131237567,3.8626415831655936,3.8626415831655936,3.8626415831655936,3.8626415831655936,3.8626415831655936,3.8626415831655936,3.8626415831655936,3.8626415831655936,3.8639358172723313,3.8639358172723313,3.8639358172723313,3.8639358172723313,3.8639358172723313,3.8639358172723313,3.8639358172723313,3.8639358172723313,3.88329756778952,3.88329756778952,3.88329756778952,3.88329756778952,3.88329756778952,3.88329756778952,3.88329756778952,3.88329756778952,3.88329756778952,3.88329756778952,3.88329756778952,3.88329756778952,3.88329756778952,3.88329756778952,3.88329756778952,3.88329756778952,3.8897300677553446,3.8897300677553446,3.8897300677553446,3.8897300677553446,3.8897300677553446,3.8897300677553446,3.8897300677553446,3.8897300677553446,3.8897300677553446,3.8897300677553446,3.8897300677553446,3.8897300677553446,3.8897300677553446,3.8897300677553446,3.8897300677553446,3.8897300677553446,3.8910152916687437,3.8910152916687437,3.8910152916687437,3.8910152916687437,3.8910152916687437,3.8910152916687437,3.8910152916687437,3.8910152916687437,3.8948684188300895,3.8948684188300895,3.8948684188300895,3.8948684188300895,3.8948684188300895,3.8948684188300895,3.8948684188300895,3.8948684188300895,3.8948684188300895,3.8948684188300895,3.8948684188300895,3.8948684188300895,3.8948684188300895,3.8948684188300895,3.8948684188300895,3.8948684188300895,3.9000000000000004,3.9000000000000004,3.9000000000000004,3.9000000000000004,3.9000000000000004,3.9000000000000004,3.9000000000000004,3.9000000000000004,3.9000000000000004,3.9000000000000004,3.9000000000000004,3.9000000000000004,3.901281840626232,3.901281840626232,3.901281840626232,3.901281840626232,3.901281840626232,3.901281840626232,3.901281840626232,3.901281840626232,3.905124837953327,3.905124837953327,3.905124837953327,3.905124837953327,3.905124837953327,3.905124837953327,3.905124837953327,3.905124837953327,3.905124837953327,3.905124837953327,3.905124837953327,3.905124837953327,3.905124837953327,3.905124837953327,3.905124837953327,3.905124837953327,3.905124837953327,3.905124837953327,3.905124837953327,3.905124837953327,3.905124837953327,3.905124837953327,3.905124837953327,3.905124837953327,3.9115214431215892,3.9115214431215892,3.9115214431215892,3.9115214431215892,3.9115214431215892,3.9115214431215892,3.9115214431215892,3.9115214431215892,3.9115214431215892,3.9115214431215892,3.9115214431215892,3.9115214431215892,3.9115214431215892,3.9115214431215892,3.9115214431215892,3.9115214431215892,3.920459156782532,3.920459156782532,3.920459156782532,3.920459156782532,3.920459156782532,3.920459156782532,3.920459156782532,3.920459156782532,3.920459156782532,3.920459156782532,3.920459156782532,3.920459156782532,3.920459156782532,3.920459156782532,3.920459156782532,3.920459156782532,3.9217343102255158,3.9217343102255158,3.9217343102255158,3.9217343102255158,3.9217343102255158,3.9217343102255158,3.9217343102255158,3.9217343102255158,3.9293765408777,3.9293765408777,3.9293765408777,3.9293765408777,3.9293765408777,3.9293765408777,3.9293765408777,3.9293765408777,3.9319206502675,3.9319206502675,3.9319206502675,3.9319206502675,3.9319206502675,3.9319206502675,3.9319206502675,3.9319206502675,3.935733730830886,3.935733730830886,3.935733730830886,3.935733730830886,3.935733730830886,3.935733730830886,3.935733730830886,3.935733730830886,3.939543120718442,3.939543120718442,3.939543120718442,3.939543120718442,3.939543120718442,3.939543120718442,3.939543120718442,3.939543120718442,3.9408120990476068,3.9408120990476068,3.9408120990476068,3.9408120990476068,3.9408120990476068,3.9408120990476068,3.9408120990476068,3.9408120990476068,3.9446165846632044,3.9446165846632044,3.9446165846632044,3.9446165846632044,3.9446165846632044,3.9446165846632044,3.9446165846632044,3.9446165846632044,3.9458839313897722,3.9458839313897722,3.9458839313897722,3.9458839313897722,3.9458839313897722,3.9458839313897722,3.9458839313897722,3.9458839313897722,3.9560080889704965,3.9560080889704965,3.9560080889704965,3.9560080889704965,3.9560080889704965,3.9560080889704965,3.9560080889704965,3.9560080889704965,3.9560080889704965,3.9560080889704965,3.9560080889704965,3.9560080889704965,3.9560080889704965,3.9560080889704965,3.9560080889704965,3.9560080889704965,3.9597979746446663,3.9597979746446663,3.9597979746446663,3.9597979746446663,3.9623225512317903,3.9623225512317903,3.9623225512317903,3.9623225512317903,3.9623225512317903,3.9623225512317903,3.9623225512317903,3.9623225512317903,3.9623225512317903,3.9623225512317903,3.9623225512317903,3.9623225512317903,3.9623225512317903,3.9623225512317903,3.9623225512317903,3.9623225512317903,3.966106403010388,3.966106403010388,3.966106403010388,3.966106403010388,3.966106403010388,3.966106403010388,3.966106403010388,3.966106403010388,3.9698866482558417,3.9698866482558417,3.9698866482558417,3.9698866482558417,3.9698866482558417,3.9698866482558417,3.9698866482558417,3.9698866482558417,3.9812058474788765,3.9812058474788765,3.9812058474788765,3.9812058474788765,3.9812058474788765,3.9812058474788765,3.9812058474788765,3.9812058474788765,3.9812058474788765,3.9812058474788765,3.9812058474788765,3.9812058474788765,3.9812058474788765,3.9812058474788765,3.9812058474788765,3.9812058474788765,3.982461550347976,3.982461550347976,3.982461550347976,3.982461550347976,3.982461550347976,3.982461550347976,3.982461550347976,3.982461550347976,3.982461550347976,3.982461550347976,3.982461550347976,3.982461550347976,3.982461550347976,3.982461550347976,3.982461550347976,3.982461550347976,3.984971769034255,3.984971769034255,3.984971769034255,3.984971769034255,3.984971769034255,3.984971769034255,3.984971769034255,3.984971769034255,3.9924929555354263,3.9924929555354263,3.9924929555354263,3.9924929555354263,3.9924929555354263,3.9924929555354263,3.9924929555354263,3.9924929555354263,3.9962482405376174,3.9962482405376174,3.9962482405376174,3.9962482405376174,3.9962482405376174,3.9962482405376174,3.9962482405376174,3.9962482405376174,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.001249804748511,4.001249804748511,4.001249804748511,4.001249804748511,4.001249804748511,4.001249804748511,4.001249804748511,4.001249804748511,4.0024992192379,4.0024992192379,4.0024992192379,4.0024992192379,4.0024992192379,4.0024992192379,4.0024992192379,4.0024992192379,4.004996878900157,4.004996878900157,4.004996878900157,4.004996878900157,4.004996878900157,4.004996878900157,4.004996878900157,4.004996878900157,4.011234224026317,4.011234224026317,4.011234224026317,4.011234224026317,4.011234224026317,4.011234224026317,4.011234224026317,4.011234224026317,4.016217125604641,4.016217125604641,4.016217125604641,4.016217125604641,4.016217125604641,4.016217125604641,4.016217125604641,4.016217125604641,4.019950248448356,4.019950248448356,4.019950248448356,4.019950248448356,4.019950248448356,4.019950248448356,4.019950248448356,4.019950248448356,4.022437072223753,4.022437072223753,4.022437072223753,4.022437072223753,4.022437072223753,4.022437072223753,4.022437072223753,4.022437072223753,4.024922359499622,4.024922359499622,4.024922359499622,4.024922359499622,4.024922359499622,4.024922359499622,4.024922359499622,4.024922359499622,4.026164427839479,4.026164427839479,4.026164427839479,4.026164427839479,4.026164427839479,4.026164427839479,4.026164427839479,4.026164427839479,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.031128874149275,4.036087214122113,4.036087214122113,4.036087214122113,4.036087214122113,4.036087214122113,4.036087214122113,4.036087214122113,4.036087214122113,4.044749683231337,4.044749683231337,4.044749683231337,4.044749683231337,4.044749683231337,4.044749683231337,4.044749683231337,4.044749683231337,4.045985664828782,4.045985664828782,4.045985664828782,4.045985664828782,4.045985664828782,4.045985664828782,4.045985664828782,4.045985664828782,4.049691346263318,4.049691346263318,4.049691346263318,4.049691346263318,4.049691346263318,4.049691346263318,4.049691346263318,4.049691346263318,4.049691346263318,4.049691346263318,4.049691346263318,4.049691346263318,4.049691346263318,4.049691346263318,4.049691346263318,4.049691346263318,4.052159917870962,4.052159917870962,4.052159917870962,4.052159917870962,4.052159917870962,4.052159917870962,4.052159917870962,4.052159917870962,4.060788100849391,4.060788100849391,4.060788100849391,4.060788100849391,4.060788100849391,4.060788100849391,4.060788100849391,4.060788100849391,4.060788100849391,4.060788100849391,4.060788100849391,4.060788100849391,4.060788100849391,4.060788100849391,4.060788100849391,4.060788100849391,4.070626487409524,4.070626487409524,4.070626487409524,4.070626487409524,4.070626487409524,4.070626487409524,4.070626487409524,4.070626487409524,4.071854614300467,4.071854614300467,4.071854614300467,4.071854614300467,4.071854614300467,4.071854614300467,4.071854614300467,4.071854614300467,4.079215610874228,4.079215610874228,4.079215610874228,4.079215610874228,4.079215610874228,4.079215610874228,4.079215610874228,4.079215610874228,4.080441152620633,4.080441152620633,4.080441152620633,4.080441152620633,4.080441152620633,4.080441152620633,4.080441152620633,4.080441152620633,4.080441152620633,4.080441152620633,4.080441152620633,4.080441152620633,4.080441152620633,4.080441152620633,4.080441152620633,4.080441152620633,4.08166632639171,4.08166632639171,4.08166632639171,4.08166632639171,4.08166632639171,4.08166632639171,4.08166632639171,4.08166632639171,4.085339643163099,4.085339643163099,4.085339643163099,4.085339643163099,4.085339643163099,4.085339643163099,4.085339643163099,4.085339643163099,4.1000000000000005,4.1000000000000005,4.1000000000000005,4.1000000000000005,4.1000000000000005,4.1000000000000005,4.1000000000000005,4.1000000000000005,4.1000000000000005,4.1000000000000005,4.1000000000000005,4.1000000000000005,4.1012193308819755,4.1012193308819755,4.1012193308819755,4.1012193308819755,4.1012193308819755,4.1012193308819755,4.1012193308819755,4.1012193308819755,4.1012193308819755,4.1012193308819755,4.1012193308819755,4.1012193308819755,4.1036569057366385,4.1036569057366385,4.1036569057366385,4.1036569057366385,4.1036569057366385,4.1036569057366385,4.1036569057366385,4.1036569057366385,4.104875150354759,4.104875150354759,4.104875150354759,4.104875150354759,4.104875150354759,4.104875150354759,4.104875150354759,4.104875150354759,4.104875150354759,4.104875150354759,4.104875150354759,4.104875150354759,4.104875150354759,4.104875150354759,4.104875150354759,4.104875150354759,4.110960958218893,4.110960958218893,4.110960958218893,4.110960958218893,4.110960958218893,4.110960958218893,4.110960958218893,4.110960958218893,4.110960958218893,4.110960958218893,4.110960958218893,4.110960958218893,4.110960958218893,4.110960958218893,4.110960958218893,4.110960958218893,4.110960958218893,4.110960958218893,4.110960958218893,4.110960958218893,4.110960958218893,4.110960958218893,4.110960958218893,4.110960958218893,4.114608122288197,4.114608122288197,4.114608122288197,4.114608122288197,4.114608122288197,4.114608122288197,4.114608122288197,4.114608122288197,4.118252056394801,4.118252056394801,4.118252056394801,4.118252056394801,4.118252056394801,4.118252056394801,4.118252056394801,4.118252056394801,4.119465984809196,4.119465984809196,4.119465984809196,4.119465984809196,4.119465984809196,4.119465984809196,4.119465984809196,4.119465984809196,4.123105625617661,4.123105625617661,4.123105625617661,4.123105625617661,4.123105625617661,4.123105625617661,4.123105625617661,4.123105625617661,4.123105625617661,4.123105625617661,4.123105625617661,4.123105625617661,4.123105625617661,4.123105625617661,4.123105625617661,4.123105625617661,4.123105625617661,4.123105625617661,4.123105625617661,4.123105625617661,4.123105625617661,4.123105625617661,4.123105625617661,4.123105625617661,4.1303752856126765,4.1303752856126765,4.1303752856126765,4.1303752856126765,4.1303752856126765,4.1303752856126765,4.1303752856126765,4.1303752856126765,4.1340053217188775,4.1340053217188775,4.1340053217188775,4.1340053217188775,4.1340053217188775,4.1340053217188775,4.1340053217188775,4.1340053217188775,4.1400483088968905,4.1400483088968905,4.1400483088968905,4.1400483088968905,4.1400483088968905,4.1400483088968905,4.1400483088968905,4.1400483088968905,4.1436698710201325,4.1436698710201325,4.1436698710201325,4.1436698710201325,4.1436698710201325,4.1436698710201325,4.1436698710201325,4.1436698710201325,4.1436698710201325,4.1436698710201325,4.1436698710201325,4.1436698710201325,4.1436698710201325,4.1436698710201325,4.1436698710201325,4.1436698710201325,4.148493702538309,4.148493702538309,4.148493702538309,4.148493702538309,4.148493702538309,4.148493702538309,4.148493702538309,4.148493702538309,4.159326868617085,4.159326868617085,4.159326868617085,4.159326868617085,4.159326868617085,4.159326868617085,4.159326868617085,4.159326868617085,4.159326868617085,4.159326868617085,4.159326868617085,4.159326868617085,4.159326868617085,4.159326868617085,4.159326868617085,4.159326868617085,4.161730409336963,4.161730409336963,4.161730409336963,4.161730409336963,4.161730409336963,4.161730409336963,4.161730409336963,4.161730409336963,4.16293165929973,4.16293165929973,4.16293165929973,4.16293165929973,4.16293165929973,4.16293165929973,4.16293165929973,4.16293165929973,4.167733196834941,4.167733196834941,4.167733196834941,4.167733196834941,4.167733196834941,4.167733196834941,4.167733196834941,4.167733196834941,4.172529209005013,4.172529209005013,4.172529209005013,4.172529209005013,4.172529209005013,4.172529209005013,4.172529209005013,4.172529209005013,4.17612260356422,4.17612260356422,4.17612260356422,4.17612260356422,4.17612260356422,4.17612260356422,4.17612260356422,4.17612260356422,4.177319714841085,4.177319714841085,4.177319714841085,4.177319714841085,4.177319714841085,4.177319714841085,4.177319714841085,4.177319714841085,4.177319714841085,4.177319714841085,4.177319714841085,4.177319714841085,4.177319714841085,4.177319714841085,4.177319714841085,4.177319714841085,4.178516483155236,4.178516483155236,4.178516483155236,4.178516483155236,4.178516483155236,4.178516483155236,4.178516483155236,4.178516483155236,4.186884283091664,4.186884283091664,4.186884283091664,4.186884283091664,4.186884283091664,4.186884283091664,4.186884283091664,4.186884283091664,4.188078318274385,4.188078318274385,4.188078318274385,4.188078318274385,4.188078318274385,4.188078318274385,4.188078318274385,4.188078318274385,4.197618372363071,4.197618372363071,4.197618372363071,4.197618372363071,4.197618372363071,4.197618372363071,4.197618372363071,4.197618372363071,4.2,4.2,4.2,4.2,4.201190307520001,4.201190307520001,4.201190307520001,4.201190307520001,4.201190307520001,4.201190307520001,4.201190307520001,4.201190307520001,4.201190307520001,4.201190307520001,4.201190307520001,4.201190307520001,4.201190307520001,4.201190307520001,4.201190307520001,4.201190307520001,4.204759208325728,4.204759208325728,4.204759208325728,4.204759208325728,4.204759208325728,4.204759208325728,4.204759208325728,4.204759208325728,4.204759208325728,4.204759208325728,4.204759208325728,4.204759208325728,4.204759208325728,4.204759208325728,4.204759208325728,4.204759208325728,4.205948168962618,4.205948168962618,4.205948168962618,4.205948168962618,4.205948168962618,4.205948168962618,4.205948168962618,4.205948168962618,4.205948168962618,4.205948168962618,4.205948168962618,4.205948168962618,4.205948168962618,4.205948168962618,4.205948168962618,4.205948168962618,4.21070065428546,4.21070065428546,4.21070065428546,4.21070065428546,4.21070065428546,4.21070065428546,4.21070065428546,4.21070065428546,4.215447781671599,4.215447781671599,4.215447781671599,4.215447781671599,4.215447781671599,4.215447781671599,4.215447781671599,4.215447781671599,4.219004621945798,4.219004621945798,4.219004621945798,4.219004621945798,4.219004621945798,4.219004621945798,4.219004621945798,4.219004621945798,4.219004621945798,4.219004621945798,4.219004621945798,4.219004621945798,4.219004621945798,4.219004621945798,4.219004621945798,4.219004621945798,4.220189569201838,4.220189569201838,4.220189569201838,4.220189569201838,4.220189569201838,4.220189569201838,4.220189569201838,4.220189569201838,4.220189569201838,4.220189569201838,4.220189569201838,4.220189569201838,4.220189569201838,4.220189569201838,4.220189569201838,4.220189569201838,4.2296571965113205,4.2296571965113205,4.2296571965113205,4.2296571965113205,4.2296571965113205,4.2296571965113205,4.2296571965113205,4.2296571965113205,4.237924020083418,4.237924020083418,4.237924020083418,4.237924020083418,4.237924020083418,4.237924020083418,4.237924020083418,4.237924020083418,4.242640687119286,4.242640687119286,4.242640687119286,4.242640687119286,4.242640687119286,4.242640687119286,4.242640687119286,4.242640687119286,4.242640687119286,4.242640687119286,4.242640687119286,4.242640687119286,4.243819034784589,4.243819034784589,4.243819034784589,4.243819034784589,4.243819034784589,4.243819034784589,4.243819034784589,4.243819034784589,4.244997055358225,4.244997055358225,4.244997055358225,4.244997055358225,4.244997055358225,4.244997055358225,4.244997055358225,4.244997055358225,4.244997055358225,4.244997055358225,4.244997055358225,4.244997055358225,4.244997055358225,4.244997055358225,4.244997055358225,4.244997055358225,4.2485291572496005,4.2485291572496005,4.2485291572496005,4.2485291572496005,4.2485291572496005,4.2485291572496005,4.2485291572496005,4.2485291572496005,4.25205832509386,4.25205832509386,4.25205832509386,4.25205832509386,4.25205832509386,4.25205832509386,4.25205832509386,4.25205832509386,4.25440947723653,4.25440947723653,4.25440947723653,4.25440947723653,4.25440947723653,4.25440947723653,4.25440947723653,4.25440947723653,4.25440947723653,4.25440947723653,4.25440947723653,4.25440947723653,4.25440947723653,4.25440947723653,4.25440947723653,4.25440947723653,4.257933771208754,4.257933771208754,4.257933771208754,4.257933771208754,4.257933771208754,4.257933771208754,4.257933771208754,4.257933771208754,4.263801121065568,4.263801121065568,4.263801121065568,4.263801121065568,4.263801121065568,4.263801121065568,4.263801121065568,4.263801121065568,4.272001872658765,4.272001872658765,4.272001872658765,4.272001872658765,4.272001872658765,4.272001872658765,4.272001872658765,4.272001872658765,4.272001872658765,4.272001872658765,4.272001872658765,4.272001872658765,4.272001872658765,4.272001872658765,4.272001872658765,4.272001872658765,4.272001872658765,4.272001872658765,4.272001872658765,4.272001872658765,4.272001872658765,4.272001872658765,4.272001872658765,4.272001872658765,4.27551166528639,4.27551166528639,4.27551166528639,4.27551166528639,4.27551166528639,4.27551166528639,4.27551166528639,4.27551166528639,4.280186911806539,4.280186911806539,4.280186911806539,4.280186911806539,4.280186911806539,4.280186911806539,4.280186911806539,4.280186911806539,4.294182110716778,4.294182110716778,4.294182110716778,4.294182110716778,4.294182110716778,4.294182110716778,4.294182110716778,4.294182110716778,4.295346318982906,4.295346318982906,4.295346318982906,4.295346318982906,4.295346318982906,4.295346318982906,4.295346318982906,4.295346318982906,4.295346318982906,4.295346318982906,4.295346318982906,4.295346318982906,4.295346318982906,4.295346318982906,4.295346318982906,4.295346318982906,4.3,4.3,4.3,4.3,4.301162633521314,4.301162633521314,4.301162633521314,4.301162633521314,4.301162633521314,4.301162633521314,4.301162633521314,4.301162633521314,4.301162633521314,4.301162633521314,4.301162633521314,4.301162633521314,4.301162633521314,4.301162633521314,4.301162633521314,4.301162633521314,4.301162633521314,4.301162633521314,4.301162633521314,4.301162633521314,4.301162633521314,4.301162633521314,4.301162633521314,4.301162633521314,4.304648650006177,4.304648650006177,4.304648650006177,4.304648650006177,4.304648650006177,4.304648650006177,4.304648650006177,4.304648650006177,4.304648650006177,4.304648650006177,4.304648650006177,4.304648650006177,4.304648650006177,4.304648650006177,4.304648650006177,4.304648650006177,4.308131845707603,4.308131845707603,4.308131845707603,4.308131845707603,4.308131845707603,4.308131845707603,4.308131845707603,4.308131845707603,4.310452412450462,4.310452412450462,4.310452412450462,4.310452412450462,4.310452412450462,4.310452412450462,4.310452412450462,4.310452412450462,4.313930922024599,4.313930922024599,4.313930922024599,4.313930922024599,4.313930922024599,4.313930922024599,4.313930922024599,4.313930922024599,4.317406628984581,4.317406628984581,4.317406628984581,4.317406628984581,4.317406628984581,4.317406628984581,4.317406628984581,4.317406628984581,4.318564576337837,4.318564576337837,4.318564576337837,4.318564576337837,4.318564576337837,4.318564576337837,4.318564576337837,4.318564576337837,4.318564576337837,4.318564576337837,4.318564576337837,4.318564576337837,4.318564576337837,4.318564576337837,4.318564576337837,4.318564576337837,4.3266615305567875,4.3266615305567875,4.3266615305567875,4.3266615305567875,4.3266615305567875,4.3266615305567875,4.3266615305567875,4.3266615305567875,4.327817001676481,4.327817001676481,4.327817001676481,4.327817001676481,4.327817001676481,4.327817001676481,4.327817001676481,4.327817001676481,4.328972164382672,4.328972164382672,4.328972164382672,4.328972164382672,4.328972164382672,4.328972164382672,4.328972164382672,4.328972164382672,4.332435804486894,4.332435804486894,4.332435804486894,4.332435804486894,4.332435804486894,4.332435804486894,4.332435804486894,4.332435804486894,4.338202392696773,4.338202392696773,4.338202392696773,4.338202392696773,4.338202392696773,4.338202392696773,4.338202392696773,4.338202392696773,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.341658669218482,4.346262762420146,4.346262762420146,4.346262762420146,4.346262762420146,4.346262762420146,4.346262762420146,4.346262762420146,4.346262762420146,4.356604182158393,4.356604182158393,4.356604182158393,4.356604182158393,4.356604182158393,4.356604182158393,4.356604182158393,4.356604182158393,4.356604182158393,4.356604182158393,4.356604182158393,4.356604182158393,4.356604182158393,4.356604182158393,4.356604182158393,4.356604182158393,4.360045871318328,4.360045871318328,4.360045871318328,4.360045871318328,4.360045871318328,4.360045871318328,4.360045871318328,4.360045871318328,4.365775990588615,4.365775990588615,4.365775990588615,4.365775990588615,4.365775990588615,4.365775990588615,4.365775990588615,4.365775990588615,4.368065933568311,4.368065933568311,4.368065933568311,4.368065933568311,4.368065933568311,4.368065933568311,4.368065933568311,4.368065933568311,4.373785545725808,4.373785545725808,4.373785545725808,4.373785545725808,4.373785545725808,4.373785545725808,4.373785545725808,4.373785545725808,4.382921400162226,4.382921400162226,4.382921400162226,4.382921400162226,4.382921400162226,4.382921400162226,4.382921400162226,4.382921400162226,4.382921400162226,4.382921400162226,4.382921400162226,4.382921400162226,4.382921400162226,4.382921400162226,4.382921400162226,4.382921400162226,4.384062043356595,4.384062043356595,4.384062043356595,4.384062043356595,4.386342439892262,4.386342439892262,4.386342439892262,4.386342439892262,4.386342439892262,4.386342439892262,4.386342439892262,4.386342439892262,4.386342439892262,4.386342439892262,4.386342439892262,4.386342439892262,4.386342439892262,4.386342439892262,4.386342439892262,4.386342439892262,4.39089968002003,4.39089968002003,4.39089968002003,4.39089968002003,4.39089968002003,4.39089968002003,4.39089968002003,4.39089968002003,4.39317652729776,4.39317652729776,4.39317652729776,4.39317652729776,4.39317652729776,4.39317652729776,4.39317652729776,4.39317652729776,4.39317652729776,4.39317652729776,4.39317652729776,4.39317652729776,4.39317652729776,4.39317652729776,4.39317652729776,4.39317652729776,4.396589587396122,4.396589587396122,4.396589587396122,4.396589587396122,4.396589587396122,4.396589587396122,4.396589587396122,4.396589587396122,4.4,4.4,4.4,4.4,4.401136216933078,4.401136216933078,4.401136216933078,4.401136216933078,4.401136216933078,4.401136216933078,4.401136216933078,4.401136216933078,4.401136216933078,4.401136216933078,4.401136216933078,4.401136216933078,4.401136216933078,4.401136216933078,4.401136216933078,4.401136216933078,4.404543109109048,4.404543109109048,4.404543109109048,4.404543109109048,4.404543109109048,4.404543109109048,4.404543109109048,4.404543109109048,4.404543109109048,4.404543109109048,4.404543109109048,4.404543109109048,4.404543109109048,4.404543109109048,4.404543109109048,4.404543109109048,4.410215414239989,4.410215414239989,4.410215414239989,4.410215414239989,4.410215414239989,4.410215414239989,4.410215414239989,4.410215414239989,4.410215414239989,4.410215414239989,4.410215414239989,4.410215414239989,4.410215414239989,4.410215414239989,4.410215414239989,4.410215414239989,4.4147480109288235,4.4147480109288235,4.4147480109288235,4.4147480109288235,4.4147480109288235,4.4147480109288235,4.4147480109288235,4.4147480109288235,4.418144406874904,4.418144406874904,4.418144406874904,4.418144406874904,4.418144406874904,4.418144406874904,4.418144406874904,4.418144406874904,4.420407221060069,4.420407221060069,4.420407221060069,4.420407221060069,4.420407221060069,4.420407221060069,4.420407221060069,4.420407221060069,4.427188724235731,4.427188724235731,4.427188724235731,4.427188724235731,4.427188724235731,4.427188724235731,4.427188724235731,4.427188724235731,4.428317965096906,4.428317965096906,4.428317965096906,4.428317965096906,4.428317965096906,4.428317965096906,4.428317965096906,4.428317965096906,4.428317965096906,4.428317965096906,4.428317965096906,4.428317965096906,4.428317965096906,4.428317965096906,4.428317965096906,4.428317965096906,4.4294469180700204,4.4294469180700204,4.4294469180700204,4.4294469180700204,4.4294469180700204,4.4294469180700204,4.4294469180700204,4.4294469180700204,4.43846820423443,4.43846820423443,4.43846820423443,4.43846820423443,4.43846820423443,4.43846820423443,4.43846820423443,4.43846820423443,4.43846820423443,4.43846820423443,4.43846820423443,4.43846820423443,4.43846820423443,4.43846820423443,4.43846820423443,4.43846820423443,4.440720662234904,4.440720662234904,4.440720662234904,4.440720662234904,4.440720662234904,4.440720662234904,4.440720662234904,4.440720662234904,4.440720662234904,4.440720662234904,4.440720662234904,4.440720662234904,4.440720662234904,4.440720662234904,4.440720662234904,4.440720662234904,4.4418464629025625,4.4418464629025625,4.4418464629025625,4.4418464629025625,4.4418464629025625,4.4418464629025625,4.4418464629025625,4.4418464629025625,4.455333881989093,4.455333881989093,4.455333881989093,4.455333881989093,4.455333881989093,4.455333881989093,4.455333881989093,4.455333881989093,4.455333881989093,4.455333881989093,4.455333881989093,4.455333881989093,4.455333881989093,4.455333881989093,4.455333881989093,4.455333881989093,4.459820624195552,4.459820624195552,4.459820624195552,4.459820624195552,4.459820624195552,4.459820624195552,4.459820624195552,4.459820624195552,4.459820624195552,4.459820624195552,4.459820624195552,4.459820624195552,4.459820624195552,4.459820624195552,4.459820624195552,4.459820624195552,4.464302857109943,4.464302857109943,4.464302857109943,4.464302857109943,4.464302857109943,4.464302857109943,4.464302857109943,4.464302857109943,4.465422712353222,4.465422712353222,4.465422712353222,4.465422712353222,4.465422712353222,4.465422712353222,4.465422712353222,4.465422712353222,4.468780594300866,4.468780594300866,4.468780594300866,4.468780594300866,4.468780594300866,4.468780594300866,4.468780594300866,4.468780594300866,4.47213595499958,4.47213595499958,4.47213595499958,4.47213595499958,4.47213595499958,4.47213595499958,4.47213595499958,4.47213595499958,4.47213595499958,4.47213595499958,4.47213595499958,4.47213595499958,4.47213595499958,4.47213595499958,4.47213595499958,4.47213595499958,4.4777226354476225,4.4777226354476225,4.4777226354476225,4.4777226354476225,4.4777226354476225,4.4777226354476225,4.4777226354476225,4.4777226354476225,4.4777226354476225,4.4777226354476225,4.4777226354476225,4.4777226354476225,4.4777226354476225,4.4777226354476225,4.4777226354476225,4.4777226354476225,4.4821869662029945,4.4821869662029945,4.4821869662029945,4.4821869662029945,4.4821869662029945,4.4821869662029945,4.4821869662029945,4.4821869662029945,4.491102314577124,4.491102314577124,4.491102314577124,4.491102314577124,4.491102314577124,4.491102314577124,4.491102314577124,4.491102314577124,4.49221548904324,4.49221548904324,4.49221548904324,4.49221548904324,4.49221548904324,4.49221548904324,4.49221548904324,4.49221548904324,4.494441010848846,4.494441010848846,4.494441010848846,4.494441010848846,4.494441010848846,4.494441010848846,4.494441010848846,4.494441010848846,4.494441010848846,4.494441010848846,4.494441010848846,4.494441010848846,4.494441010848846,4.494441010848846,4.494441010848846,4.494441010848846,4.5,4.5,4.5,4.5,4.5,4.5,4.5,4.5,4.5,4.5,4.5,4.5,4.50111097397076,4.50111097397076,4.50111097397076,4.50111097397076,4.50111097397076,4.50111097397076,4.50111097397076,4.50111097397076,4.504442251822083,4.504442251822083,4.504442251822083,4.504442251822083,4.504442251822083,4.504442251822083,4.504442251822083,4.504442251822083,4.509988913511872,4.509988913511872,4.509988913511872,4.509988913511872,4.509988913511872,4.509988913511872,4.509988913511872,4.509988913511872,4.512205669071391,4.512205669071391,4.512205669071391,4.512205669071391,4.512205669071391,4.512205669071391,4.512205669071391,4.512205669071391,4.517742799230607,4.517742799230607,4.517742799230607,4.517742799230607,4.517742799230607,4.517742799230607,4.517742799230607,4.517742799230607,4.517742799230607,4.517742799230607,4.517742799230607,4.517742799230607,4.517742799230607,4.517742799230607,4.517742799230607,4.517742799230607,4.518849411078001,4.518849411078001,4.518849411078001,4.518849411078001,4.518849411078001,4.518849411078001,4.518849411078001,4.518849411078001,4.522167621838006,4.522167621838006,4.522167621838006,4.522167621838006,4.522167621838006,4.522167621838006,4.522167621838006,4.522167621838006,4.522167621838006,4.522167621838006,4.522167621838006,4.522167621838006,4.522167621838006,4.522167621838006,4.522167621838006,4.522167621838006,4.525483399593905,4.525483399593905,4.525483399593905,4.525483399593905,4.527692569068709,4.527692569068709,4.527692569068709,4.527692569068709,4.527692569068709,4.527692569068709,4.527692569068709,4.527692569068709,4.527692569068709,4.527692569068709,4.527692569068709,4.527692569068709,4.527692569068709,4.527692569068709,4.527692569068709,4.527692569068709,4.527692569068709,4.527692569068709,4.527692569068709,4.527692569068709,4.527692569068709,4.527692569068709,4.527692569068709,4.527692569068709,4.531004303683677,4.531004303683677,4.531004303683677,4.531004303683677,4.531004303683677,4.531004303683677,4.531004303683677,4.531004303683677,4.534313619501854,4.534313619501854,4.534313619501854,4.534313619501854,4.534313619501854,4.534313619501854,4.534313619501854,4.534313619501854,4.535416188179427,4.535416188179427,4.535416188179427,4.535416188179427,4.535416188179427,4.535416188179427,4.535416188179427,4.535416188179427,4.539823785126467,4.539823785126467,4.539823785126467,4.539823785126467,4.539823785126467,4.539823785126467,4.539823785126467,4.539823785126467,4.545327270945405,4.545327270945405,4.545327270945405,4.545327270945405,4.545327270945405,4.545327270945405,4.545327270945405,4.545327270945405,4.548626166217664,4.548626166217664,4.548626166217664,4.548626166217664,4.548626166217664,4.548626166217664,4.548626166217664,4.548626166217664,4.5541190146942805,4.5541190146942805,4.5541190146942805,4.5541190146942805,4.5541190146942805,4.5541190146942805,4.5541190146942805,4.5541190146942805,4.5541190146942805,4.5541190146942805,4.5541190146942805,4.5541190146942805,4.5541190146942805,4.5541190146942805,4.5541190146942805,4.5541190146942805,4.560701700396552,4.560701700396552,4.560701700396552,4.560701700396552,4.560701700396552,4.560701700396552,4.560701700396552,4.560701700396552,4.560701700396552,4.560701700396552,4.560701700396552,4.560701700396552,4.560701700396552,4.560701700396552,4.560701700396552,4.560701700396552,4.561797891182818,4.561797891182818,4.561797891182818,4.561797891182818,4.561797891182818,4.561797891182818,4.561797891182818,4.561797891182818,4.565084884205331,4.565084884205331,4.565084884205331,4.565084884205331,4.565084884205331,4.565084884205331,4.565084884205331,4.565084884205331,4.5694638635183455,4.5694638635183455,4.5694638635183455,4.5694638635183455,4.5694638635183455,4.5694638635183455,4.5694638635183455,4.5694638635183455,4.570557952810576,4.570557952810576,4.570557952810576,4.570557952810576,4.570557952810576,4.570557952810576,4.570557952810576,4.570557952810576,4.5793012567421245,4.5793012567421245,4.5793012567421245,4.5793012567421245,4.5793012567421245,4.5793012567421245,4.5793012567421245,4.5793012567421245,4.580392996239515,4.580392996239515,4.580392996239515,4.580392996239515,4.580392996239515,4.580392996239515,4.580392996239515,4.580392996239515,4.588027898781784,4.588027898781784,4.588027898781784,4.588027898781784,4.588027898781784,4.588027898781784,4.588027898781784,4.588027898781784,4.588027898781784,4.588027898781784,4.588027898781784,4.588027898781784,4.588027898781784,4.588027898781784,4.588027898781784,4.588027898781784,4.589117562233507,4.589117562233507,4.589117562233507,4.589117562233507,4.589117562233507,4.589117562233507,4.589117562233507,4.589117562233507,4.596737973824482,4.596737973824482,4.596737973824482,4.596737973824482,4.596737973824482,4.596737973824482,4.596737973824482,4.596737973824482,4.6000000000000005,4.6000000000000005,4.6000000000000005,4.6000000000000005,4.601086828130937,4.601086828130937,4.601086828130937,4.601086828130937,4.601086828130937,4.601086828130937,4.601086828130937,4.601086828130937,4.601086828130937,4.601086828130937,4.601086828130937,4.601086828130937,4.601086828130937,4.601086828130937,4.601086828130937,4.601086828130937,4.604345773288535,4.604345773288535,4.604345773288535,4.604345773288535,4.604345773288535,4.604345773288535,4.604345773288535,4.604345773288535,4.604345773288535,4.604345773288535,4.604345773288535,4.604345773288535,4.604345773288535,4.604345773288535,4.604345773288535,4.604345773288535,4.606517122512408,4.606517122512408,4.606517122512408,4.606517122512408,4.606517122512408,4.606517122512408,4.606517122512408,4.606517122512408,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.609772228646444,4.614108798023731,4.614108798023731,4.614108798023731,4.614108798023731,4.614108798023731,4.614108798023731,4.614108798023731,4.614108798023731,4.6173585522460785,4.6173585522460785,4.6173585522460785,4.6173585522460785,4.6173585522460785,4.6173585522460785,4.6173585522460785,4.6173585522460785,4.6173585522460785,4.6173585522460785,4.6173585522460785,4.6173585522460785,4.6173585522460785,4.6173585522460785,4.6173585522460785,4.6173585522460785,4.622769732530489,4.622769732530489,4.622769732530489,4.622769732530489,4.622769732530489,4.622769732530489,4.622769732530489,4.622769732530489,4.623851208678757,4.623851208678757,4.623851208678757,4.623851208678757,4.623851208678757,4.623851208678757,4.623851208678757,4.623851208678757,4.62709412050371,4.62709412050371,4.62709412050371,4.62709412050371,4.62709412050371,4.62709412050371,4.62709412050371,4.62709412050371,4.632493928760188,4.632493928760188,4.632493928760188,4.632493928760188,4.632493928760188,4.632493928760188,4.632493928760188,4.632493928760188,4.632493928760188,4.632493928760188,4.632493928760188,4.632493928760188,4.632493928760188,4.632493928760188,4.632493928760188,4.632493928760188,4.638965401897281,4.638965401897281,4.638965401897281,4.638965401897281,4.638965401897281,4.638965401897281,4.638965401897281,4.638965401897281,4.640043103248073,4.640043103248073,4.640043103248073,4.640043103248073,4.640043103248073,4.640043103248073,4.640043103248073,4.640043103248073,4.648655719667784,4.648655719667784,4.648655719667784,4.648655719667784,4.648655719667784,4.648655719667784,4.648655719667784,4.648655719667784,4.651881339845203,4.651881339845203,4.651881339845203,4.651881339845203,4.651881339845203,4.651881339845203,4.651881339845203,4.651881339845203,4.652956049652737,4.652956049652737,4.652956049652737,4.652956049652737,4.652956049652737,4.652956049652737,4.652956049652737,4.652956049652737,4.652956049652737,4.652956049652737,4.652956049652737,4.652956049652737,4.652956049652737,4.652956049652737,4.652956049652737,4.652956049652737,4.657252408878008,4.657252408878008,4.657252408878008,4.657252408878008,4.657252408878008,4.657252408878008,4.657252408878008,4.657252408878008,4.661544808322666,4.661544808322666,4.661544808322666,4.661544808322666,4.661544808322666,4.661544808322666,4.661544808322666,4.661544808322666,4.661544808322666,4.661544808322666,4.661544808322666,4.661544808322666,4.661544808322666,4.661544808322666,4.661544808322666,4.661544808322666,4.664761515876241,4.664761515876241,4.664761515876241,4.664761515876241,4.664761515876241,4.664761515876241,4.664761515876241,4.664761515876241,4.666904755831214,4.666904755831214,4.666904755831214,4.666904755831214,4.669047011971501,4.669047011971501,4.669047011971501,4.669047011971501,4.669047011971501,4.669047011971501,4.669047011971501,4.669047011971501,4.669047011971501,4.669047011971501,4.669047011971501,4.669047011971501,4.669047011971501,4.669047011971501,4.669047011971501,4.669047011971501,4.675467891024384,4.675467891024384,4.675467891024384,4.675467891024384,4.675467891024384,4.675467891024384,4.675467891024384,4.675467891024384,4.681879964287851,4.681879964287851,4.681879964287851,4.681879964287851,4.681879964287851,4.681879964287851,4.681879964287851,4.681879964287851,4.684015371452148,4.684015371452148,4.684015371452148,4.684015371452148,4.684015371452148,4.684015371452148,4.684015371452148,4.684015371452148,4.686149805543993,4.686149805543993,4.686149805543993,4.686149805543993,4.686149805543993,4.686149805543993,4.686149805543993,4.686149805543993,4.687216658103186,4.687216658103186,4.687216658103186,4.687216658103186,4.687216658103186,4.687216658103186,4.687216658103186,4.687216658103186,4.687216658103186,4.687216658103186,4.687216658103186,4.687216658103186,4.687216658103186,4.687216658103186,4.687216658103186,4.687216658103186,4.695742752749559,4.695742752749559,4.695742752749559,4.695742752749559,4.695742752749559,4.695742752749559,4.695742752749559,4.695742752749559,4.7,4.7,4.7,4.7,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.701063709417264,4.70425339453563,4.70425339453563,4.70425339453563,4.70425339453563,4.70425339453563,4.70425339453563,4.70425339453563,4.70425339453563,4.707440918375928,4.707440918375928,4.707440918375928,4.707440918375928,4.707440918375928,4.707440918375928,4.707440918375928,4.707440918375928,4.709564735726647,4.709564735726647,4.709564735726647,4.709564735726647,4.709564735726647,4.709564735726647,4.709564735726647,4.709564735726647,4.712748667179272,4.712748667179272,4.712748667179272,4.712748667179272,4.712748667179272,4.712748667179272,4.712748667179272,4.712748667179272,4.7169905660283025,4.7169905660283025,4.7169905660283025,4.7169905660283025,4.7169905660283025,4.7169905660283025,4.7169905660283025,4.7169905660283025,4.7169905660283025,4.7169905660283025,4.7169905660283025,4.7169905660283025,4.7169905660283025,4.7169905660283025,4.7169905660283025,4.7169905660283025,4.7169905660283025,4.7169905660283025,4.7169905660283025,4.7169905660283025,4.7169905660283025,4.7169905660283025,4.7169905660283025,4.7169905660283025,4.720169488482379,4.720169488482379,4.720169488482379,4.720169488482379,4.720169488482379,4.720169488482379,4.720169488482379,4.720169488482379,4.72652091923859,4.72652091923859,4.72652091923859,4.72652091923859,4.72652091923859,4.72652091923859,4.72652091923859,4.72652091923859,4.729693436154188,4.729693436154188,4.729693436154188,4.729693436154188,4.729693436154188,4.729693436154188,4.729693436154188,4.729693436154188,4.738143096192854,4.738143096192854,4.738143096192854,4.738143096192854,4.738143096192854,4.738143096192854,4.738143096192854,4.738143096192854,4.738143096192854,4.738143096192854,4.738143096192854,4.738143096192854,4.738143096192854,4.738143096192854,4.738143096192854,4.738143096192854,4.741307836451879,4.741307836451879,4.741307836451879,4.741307836451879,4.741307836451879,4.741307836451879,4.741307836451879,4.741307836451879,4.742362280551751,4.742362280551751,4.742362280551751,4.742362280551751,4.742362280551751,4.742362280551751,4.742362280551751,4.742362280551751,4.742362280551751,4.742362280551751,4.742362280551751,4.742362280551751,4.742362280551751,4.742362280551751,4.742362280551751,4.742362280551751,4.743416490252569,4.743416490252569,4.743416490252569,4.743416490252569,4.743416490252569,4.743416490252569,4.743416490252569,4.743416490252569,4.743416490252569,4.743416490252569,4.743416490252569,4.743416490252569,4.743416490252569,4.743416490252569,4.743416490252569,4.743416490252569,4.750789408087882,4.750789408087882,4.750789408087882,4.750789408087882,4.750789408087882,4.750789408087882,4.750789408087882,4.750789408087882,4.750789408087882,4.750789408087882,4.750789408087882,4.750789408087882,4.750789408087882,4.750789408087882,4.750789408087882,4.750789408087882,4.751841748206689,4.751841748206689,4.751841748206689,4.751841748206689,4.751841748206689,4.751841748206689,4.751841748206689,4.751841748206689,4.753945729601885,4.753945729601885,4.753945729601885,4.753945729601885,4.753945729601885,4.753945729601885,4.753945729601885,4.753945729601885,4.753945729601885,4.753945729601885,4.753945729601885,4.753945729601885,4.753945729601885,4.753945729601885,4.753945729601885,4.753945729601885,4.763402145525822,4.763402145525822,4.763402145525822,4.763402145525822,4.763402145525822,4.763402145525822,4.763402145525822,4.763402145525822,4.767598976424087,4.767598976424087,4.767598976424087,4.767598976424087,4.767598976424087,4.767598976424087,4.767598976424087,4.767598976424087,4.770744176750625,4.770744176750625,4.770744176750625,4.770744176750625,4.770744176750625,4.770744176750625,4.770744176750625,4.770744176750625,4.775981574503821,4.775981574503821,4.775981574503821,4.775981574503821,4.775981574503821,4.775981574503821,4.775981574503821,4.775981574503821,4.780167361086848,4.780167361086848,4.780167361086848,4.780167361086848,4.780167361086848,4.780167361086848,4.780167361086848,4.780167361086848,4.780167361086848,4.780167361086848,4.780167361086848,4.780167361086848,4.780167361086848,4.780167361086848,4.780167361086848,4.780167361086848,4.78539444560216,4.78539444560216,4.78539444560216,4.78539444560216,4.78539444560216,4.78539444560216,4.78539444560216,4.78539444560216,4.78539444560216,4.78539444560216,4.78539444560216,4.78539444560216,4.78539444560216,4.78539444560216,4.78539444560216,4.78539444560216,4.788527957525152,4.788527957525152,4.788527957525152,4.788527957525152,4.788527957525152,4.788527957525152,4.788527957525152,4.788527957525152,4.792702786528704,4.792702786528704,4.792702786528704,4.792702786528704,4.792702786528704,4.792702786528704,4.792702786528704,4.792702786528704,4.800000000000001,4.800000000000001,4.800000000000001,4.800000000000001,4.801041553663122,4.801041553663122,4.801041553663122,4.801041553663122,4.801041553663122,4.801041553663122,4.801041553663122,4.801041553663122,4.801041553663122,4.801041553663122,4.801041553663122,4.801041553663122,4.801041553663122,4.801041553663122,4.801041553663122,4.801041553663122,4.8020828814171885,4.8020828814171885,4.8020828814171885,4.8020828814171885,4.8020828814171885,4.8020828814171885,4.8020828814171885,4.8020828814171885,4.804164859785725,4.804164859785725,4.804164859785725,4.804164859785725,4.804164859785725,4.804164859785725,4.804164859785725,4.804164859785725,4.805205510693586,4.805205510693586,4.805205510693586,4.805205510693586,4.805205510693586,4.805205510693586,4.805205510693586,4.805205510693586,4.8083261120685235,4.8083261120685235,4.8083261120685235,4.8083261120685235,4.8083261120685235,4.8083261120685235,4.8083261120685235,4.8083261120685235,4.8083261120685235,4.8083261120685235,4.8083261120685235,4.8083261120685235,4.80936586256442,4.80936586256442,4.80936586256442,4.80936586256442,4.80936586256442,4.80936586256442,4.80936586256442,4.80936586256442,4.810405388322278,4.810405388322278,4.810405388322278,4.810405388322278,4.810405388322278,4.810405388322278,4.810405388322278,4.810405388322278,4.810405388322278,4.810405388322278,4.810405388322278,4.810405388322278,4.810405388322278,4.810405388322278,4.810405388322278,4.810405388322278,4.8166378315169185,4.8166378315169185,4.8166378315169185,4.8166378315169185,4.8166378315169185,4.8166378315169185,4.8166378315169185,4.8166378315169185,4.8166378315169185,4.8166378315169185,4.8166378315169185,4.8166378315169185,4.8166378315169185,4.8166378315169185,4.8166378315169185,4.8166378315169185,4.825971404805462,4.825971404805462,4.825971404805462,4.825971404805462,4.825971404805462,4.825971404805462,4.825971404805462,4.825971404805462,4.825971404805462,4.825971404805462,4.825971404805462,4.825971404805462,4.825971404805462,4.825971404805462,4.825971404805462,4.825971404805462,4.8270073544588685,4.8270073544588685,4.8270073544588685,4.8270073544588685,4.8270073544588685,4.8270073544588685,4.8270073544588685,4.8270073544588685,4.8270073544588685,4.8270073544588685,4.8270073544588685,4.8270073544588685,4.8270073544588685,4.8270073544588685,4.8270073544588685,4.8270073544588685,4.830113870293329,4.830113870293329,4.830113870293329,4.830113870293329,4.830113870293329,4.830113870293329,4.830113870293329,4.830113870293329,4.833218389437829,4.833218389437829,4.833218389437829,4.833218389437829,4.833218389437829,4.833218389437829,4.833218389437829,4.833218389437829,4.8373546489791295,4.8373546489791295,4.8373546489791295,4.8373546489791295,4.8373546489791295,4.8373546489791295,4.8373546489791295,4.8373546489791295,4.8373546489791295,4.8373546489791295,4.8373546489791295,4.8373546489791295,4.8373546489791295,4.8373546489791295,4.8373546489791295,4.8373546489791295,4.838388161361178,4.838388161361178,4.838388161361178,4.838388161361178,4.838388161361178,4.838388161361178,4.838388161361178,4.838388161361178,4.841487374764082,4.841487374764082,4.841487374764082,4.841487374764082,4.841487374764082,4.841487374764082,4.841487374764082,4.841487374764082,4.846648326421054,4.846648326421054,4.846648326421054,4.846648326421054,4.846648326421054,4.846648326421054,4.846648326421054,4.846648326421054,4.850773134253962,4.850773134253962,4.850773134253962,4.850773134253962,4.850773134253962,4.850773134253962,4.850773134253962,4.850773134253962,4.850773134253962,4.850773134253962,4.850773134253962,4.850773134253962,4.850773134253962,4.850773134253962,4.850773134253962,4.850773134253962,4.854894437575343,4.854894437575343,4.854894437575343,4.854894437575343,4.854894437575343,4.854894437575343,4.854894437575343,4.854894437575343,4.860041152089147,4.860041152089147,4.860041152089147,4.860041152089147,4.860041152089147,4.860041152089147,4.860041152089147,4.860041152089147,4.866210024238576,4.866210024238576,4.866210024238576,4.866210024238576,4.866210024238576,4.866210024238576,4.866210024238576,4.866210024238576,4.870318264754369,4.870318264754369,4.870318264754369,4.870318264754369,4.870318264754369,4.870318264754369,4.870318264754369,4.870318264754369,4.8754486972995625,4.8754486972995625,4.8754486972995625,4.8754486972995625,4.8754486972995625,4.8754486972995625,4.8754486972995625,4.8754486972995625,4.876474136094644,4.876474136094644,4.876474136094644,4.876474136094644,4.876474136094644,4.876474136094644,4.876474136094644,4.876474136094644,4.876474136094644,4.876474136094644,4.876474136094644,4.876474136094644,4.876474136094644,4.876474136094644,4.876474136094644,4.876474136094644,4.879549159502341,4.879549159502341,4.879549159502341,4.879549159502341,4.879549159502341,4.879549159502341,4.879549159502341,4.879549159502341,4.882622246293481,4.882622246293481,4.882622246293481,4.882622246293481,4.882622246293481,4.882622246293481,4.882622246293481,4.882622246293481,4.883646178829912,4.883646178829912,4.883646178829912,4.883646178829912,4.883646178829912,4.883646178829912,4.883646178829912,4.883646178829912,4.883646178829912,4.883646178829912,4.883646178829912,4.883646178829912,4.883646178829912,4.883646178829912,4.883646178829912,4.883646178829912,4.884669896727925,4.884669896727925,4.884669896727925,4.884669896727925,4.884669896727925,4.884669896727925,4.884669896727925,4.884669896727925,4.887739763939975,4.887739763939975,4.887739763939975,4.887739763939975,4.887739763939975,4.887739763939975,4.887739763939975,4.887739763939975,4.891829923454004,4.891829923454004,4.891829923454004,4.891829923454004,4.891829923454004,4.891829923454004,4.891829923454004,4.891829923454004,4.9,4.9,4.9,4.9,4.901020301937138,4.901020301937138,4.901020301937138,4.901020301937138,4.901020301937138,4.901020301937138,4.901020301937138,4.901020301937138,4.903060268852506,4.903060268852506,4.903060268852506,4.903060268852506,4.903060268852506,4.903060268852506,4.903060268852506,4.903060268852506,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.904079934095692,4.909175083453431,4.909175083453431,4.909175083453431,4.909175083453431,4.909175083453431,4.909175083453431,4.909175083453431,4.909175083453431,4.909175083453431,4.909175083453431,4.909175083453431,4.909175083453431,4.909175083453431,4.909175083453431,4.909175083453431,4.909175083453431,4.9162994213127424,4.9162994213127424,4.9162994213127424,4.9162994213127424,4.9162994213127424,4.9162994213127424,4.9162994213127424,4.9162994213127424,4.919349550499538,4.919349550499538,4.919349550499538,4.919349550499538,4.919349550499538,4.919349550499538,4.919349550499538,4.919349550499538,4.920365840057018,4.920365840057018,4.920365840057018,4.920365840057018,4.920365840057018,4.920365840057018,4.920365840057018,4.920365840057018,4.924428900898053,4.924428900898053,4.924428900898053,4.924428900898053,4.924428900898053,4.924428900898053,4.924428900898053,4.924428900898053,4.924428900898053,4.924428900898053,4.924428900898053,4.924428900898053,4.924428900898053,4.924428900898053,4.924428900898053,4.924428900898053,4.924428900898053,4.924428900898053,4.924428900898053,4.924428900898053,4.924428900898053,4.924428900898053,4.924428900898053,4.924428900898053,4.925444142409901,4.925444142409901,4.925444142409901,4.925444142409901,4.925444142409901,4.925444142409901,4.925444142409901,4.925444142409901,4.933558553417605,4.933558553417605,4.933558553417605,4.933558553417605,4.933558553417605,4.933558553417605,4.933558553417605,4.933558553417605,4.9365980188789935,4.9365980188789935,4.9365980188789935,4.9365980188789935,4.9365980188789935,4.9365980188789935,4.9365980188789935,4.9365980188789935,4.9396356140913875,4.9396356140913875,4.9396356140913875,4.9396356140913875,4.9396356140913875,4.9396356140913875,4.9396356140913875,4.9396356140913875,4.9396356140913875,4.9396356140913875,4.9396356140913875,4.9396356140913875,4.9396356140913875,4.9396356140913875,4.9396356140913875,4.9396356140913875,4.94064773081425,4.94064773081425,4.94064773081425,4.94064773081425,4.94064773081425,4.94064773081425,4.94064773081425,4.94064773081425,4.947726750741193,4.947726750741193,4.947726750741193,4.947726750741193,4.947726750741193,4.947726750741193,4.947726750741193,4.947726750741193,4.949747468305834,4.949747468305834,4.949747468305834,4.949747468305834,4.949747468305834,4.949747468305834,4.949747468305834,4.949747468305834,4.949747468305834,4.949747468305834,4.949747468305834,4.949747468305834,4.951767361255979,4.951767361255979,4.951767361255979,4.951767361255979,4.951767361255979,4.951767361255979,4.951767361255979,4.951767361255979,4.957822102496216,4.957822102496216,4.957822102496216,4.957822102496216,4.957822102496216,4.957822102496216,4.957822102496216,4.957822102496216,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.964876634922565,4.965883607174055,4.965883607174055,4.965883607174055,4.965883607174055,4.965883607174055,4.965883607174055,4.965883607174055,4.965883607174055,4.967896939349689,4.967896939349689,4.967896939349689,4.967896939349689,4.967896939349689,4.967896939349689,4.967896939349689,4.967896939349689,4.972926703662543,4.972926703662543,4.972926703662543,4.972926703662543,4.972926703662543,4.972926703662543,4.972926703662543,4.972926703662543,4.973932046178355,4.973932046178355,4.973932046178355,4.973932046178355,4.973932046178355,4.973932046178355,4.973932046178355,4.973932046178355,4.976946855251722,4.976946855251722,4.976946855251722,4.976946855251722,4.976946855251722,4.976946855251722,4.976946855251722,4.976946855251722,4.98196748283246,4.98196748283246,4.98196748283246,4.98196748283246,4.98196748283246,4.98196748283246,4.98196748283246,4.98196748283246,4.98196748283246,4.98196748283246,4.98196748283246,4.98196748283246,4.98196748283246,4.98196748283246,4.98196748283246,4.98196748283246,4.992995093127972,4.992995093127972,4.992995093127972,4.992995093127972,4.992995093127972,4.992995093127972,4.992995093127972,4.992995093127972,4.99799959983992,4.99799959983992,4.99799959983992,4.99799959983992,4.99799959983992,4.99799959983992,4.99799959983992,4.99799959983992,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0,5.0}; + +const int expansion_pos_l[7845] = {0,0,0,1,-1,1,1,-1,-1,0,0,2,-2,1,1,-1,-1,2,2,-2,-2,2,2,-2,-2,0,0,3,-3,1,1,-1,-1,3,3,-3,-3,2,2,-2,-2,3,3,-3,-3,0,0,4,-4,1,1,-1,-1,4,4,-4,-4,3,3,-3,-3,2,2,-2,-2,4,4,-4,-4,0,0,3,3,-3,-3,4,4,-4,-4,5,-5,1,1,-1,-1,5,5,-5,-5,2,2,-2,-2,5,5,-5,-5,4,4,-4,-4,3,3,-3,-3,5,5,-5,-5,0,0,6,-6,1,1,-1,-1,6,6,-6,-6,2,2,-2,-2,6,6,-6,-6,4,4,-4,-4,5,5,-5,-5,3,3,-3,-3,6,6,-6,-6,0,0,7,-7,1,1,-1,-1,5,5,-5,-5,7,7,-7,-7,4,4,-4,-4,6,6,-6,-6,2,2,-2,-2,7,7,-7,-7,3,3,-3,-3,7,7,-7,-7,5,5,-5,-5,6,6,-6,-6,0,0,8,-8,1,1,-1,-1,4,4,-4,-4,7,7,-7,-7,8,8,-8,-8,2,2,-2,-2,8,8,-8,-8,6,6,-6,-6,3,3,-3,-3,8,8,-8,-8,5,5,-5,-5,7,7,-7,-7,4,4,-4,-4,8,8,-8,-8,0,0,9,-9,1,1,-1,-1,9,9,-9,-9,2,2,-2,-2,6,6,-6,-6,7,7,-7,-7,9,9,-9,-9,5,5,-5,-5,8,8,-8,-8,3,3,-3,-3,9,9,-9,-9,4,4,-4,-4,9,9,-9,-9,7,7,-7,-7,0,0,6,6,-6,-6,8,8,-8,-8,10,-10,1,1,-1,-1,10,10,-10,-10,2,2,-2,-2,10,10,-10,-10,5,5,-5,-5,9,9,-9,-9,3,3,-3,-3,10,10,-10,-10,7,7,-7,-7,8,8,-8,-8,4,4,-4,-4,10,10,-10,-10,6,6,-6,-6,9,9,-9,-9,0,0,11,-11,1,1,-1,-1,11,11,-11,-11,2,2,-2,-2,5,5,-5,-5,10,10,-10,-10,11,11,-11,-11,8,8,-8,-8,3,3,-3,-3,7,7,-7,-7,9,9,-9,-9,11,11,-11,-11,6,6,-6,-6,10,10,-10,-10,4,4,-4,-4,11,11,-11,-11,0,0,12,-12,1,1,-1,-1,8,8,-8,-8,9,9,-9,-9,12,12,-12,-12,5,5,-5,-5,11,11,-11,-11,2,2,-2,-2,12,12,-12,-12,7,7,-7,-7,10,10,-10,-10,3,3,-3,-3,12,12,-12,-12,6,6,-6,-6,11,11,-11,-11,4,4,-4,-4,12,12,-12,-12,9,9,-9,-9,8,8,-8,-8,10,10,-10,-10,0,0,5,5,-5,-5,12,12,-12,-12,13,-13,1,1,-1,-1,7,7,-7,-7,11,11,-11,-11,13,13,-13,-13,2,2,-2,-2,13,13,-13,-13,3,3,-3,-3,13,13,-13,-13,6,6,-6,-6,12,12,-12,-12,9,9,-9,-9,10,10,-10,-10,4,4,-4,-4,8,8,-8,-8,11,11,-11,-11,13,13,-13,-13,7,7,-7,-7,12,12,-12,-12,5,5,-5,-5,13,13,-13,-13,0,0,14,-14,1,1,-1,-1,14,14,-14,-14,2,2,-2,-2,10,10,-10,-10,14,14,-14,-14,9,9,-9,-9,11,11,-11,-11,3,3,-3,-3,6,6,-6,-6,13,13,-13,-13,14,14,-14,-14,8,8,-8,-8,12,12,-12,-12,4,4,-4,-4,14,14,-14,-14,7,7,-7,-7,13,13,-13,-13,5,5,-5,-5,10,10,-10,-10,11,11,-11,-11,14,14,-14,-14,0,0,9,9,-9,-9,12,12,-12,-12,15,-15,1,1,-1,-1,15,15,-15,-15,2,2,-2,-2,15,15,-15,-15,6,6,-6,-6,14,14,-14,-14,8,8,-8,-8,13,13,-13,-13,3,3,-3,-3,15,15,-15,-15,4,4,-4,-4,15,15,-15,-15,11,11,-11,-11,10,10,-10,-10,12,12,-12,-12,7,7,-7,-7,14,14,-14,-14,5,5,-5,-5,9,9,-9,-9,13,13,-13,-13,15,15,-15,-15,0,0,16,-16,1,1,-1,-1,16,16,-16,-16,2,2,-2,-2,8,8,-8,-8,14,14,-14,-14,16,16,-16,-16,6,6,-6,-6,15,15,-15,-15,3,3,-3,-3,11,11,-11,-11,12,12,-12,-12,16,16,-16,-16,10,10,-10,-10,13,13,-13,-13,4,4,-4,-4,16,16,-16,-16,7,7,-7,-7,15,15,-15,-15,9,9,-9,-9,14,14,-14,-14,5,5,-5,-5,16,16,-16,-16,12,12,-12,-12,0,0,8,8,-8,-8,15,15,-15,-15,17,-17,1,1,-1,-1,11,11,-11,-11,13,13,-13,-13,17,17,-17,-17,6,6,-6,-6,16,16,-16,-16,2,2,-2,-2,17,17,-17,-17,10,10,-10,-10,14,14,-14,-14,3,3,-3,-3,17,17,-17,-17,4,4,-4,-4,7,7,-7,-7,16,16,-16,-16,17,17,-17,-17,9,9,-9,-9,15,15,-15,-15,12,12,-12,-12,13,13,-13,-13,5,5,-5,-5,17,17,-17,-17,11,11,-11,-11,14,14,-14,-14,8,8,-8,-8,16,16,-16,-16,0,0,18,-18,1,1,-1,-1,6,6,-6,-6,10,10,-10,-10,15,15,-15,-15,17,17,-17,-17,18,18,-18,-18,2,2,-2,-2,18,18,-18,-18,3,3,-3,-3,18,18,-18,-18,9,9,-9,-9,16,16,-16,-16,7,7,-7,-7,13,13,-13,-13,17,17,-17,-17,4,4,-4,-4,12,12,-12,-12,14,14,-14,-14,18,18,-18,-18,11,11,-11,-11,15,15,-15,-15,5,5,-5,-5,18,18,-18,-18,8,8,-8,-8,17,17,-17,-17,10,10,-10,-10,16,16,-16,-16,6,6,-6,-6,18,18,-18,-18,0,0,19,-19,1,1,-1,-1,19,19,-19,-19,2,2,-2,-2,13,13,-13,-13,14,14,-14,-14,19,19,-19,-19,12,12,-12,-12,15,15,-15,-15,3,3,-3,-3,9,9,-9,-9,17,17,-17,-17,19,19,-19,-19,7,7,-7,-7,18,18,-18,-18,4,4,-4,-4,11,11,-11,-11,16,16,-16,-16,19,19,-19,-19,5,5,-5,-5,19,19,-19,-19,8,8,-8,-8,18,18,-18,-18,10,10,-10,-10,17,17,-17,-17,14,14,-14,-14,13,13,-13,-13,15,15,-15,-15,6,6,-6,-6,19,19,-19,-19,0,0,12,12,-12,-12,16,16,-16,-16,20,-20,1,1,-1,-1,20,20,-20,-20,2,2,-2,-2,20,20,-20,-20,9,9,-9,-9,18,18,-18,-18,3,3,-3,-3,20,20,-20,-20,7,7,-7,-7,11,11,-11,-11,17,17,-17,-17,19,19,-19,-19,4,4,-4,-4,20,20,-20,-20,14,14,-14,-14,15,15,-15,-15,10,10,-10,-10,18,18,-18,-18,5,5,-5,-5,8,8,-8,-8,13,13,-13,-13,16,16,-16,-16,19,19,-19,-19,20,20,-20,-20,12,12,-12,-12,17,17,-17,-17,6,6,-6,-6,20,20,-20,-20,0,0,21,-21,1,1,-1,-1,9,9,-9,-9,19,19,-19,-19,21,21,-21,-21,2,2,-2,-2,11,11,-11,-11,18,18,-18,-18,21,21,-21,-21,7,7,-7,-7,20,20,-20,-20,3,3,-3,-3,15,15,-15,-15,21,21,-21,-21,14,14,-14,-14,16,16,-16,-16,4,4,-4,-4,21,21,-21,-21,13,13,-13,-13,17,17,-17,-17,10,10,-10,-10,19,19,-19,-19,8,8,-8,-8,20,20,-20,-20,5,5,-5,-5,21,21,-21,-21,12,12,-12,-12,18,18,-18,-18,6,6,-6,-6,21,21,-21,-21,9,9,-9,-9,15,15,-15,-15,16,16,-16,-16,20,20,-20,-20,11,11,-11,-11,19,19,-19,-19,0,0,22,-22,1,1,-1,-1,14,14,-14,-14,17,17,-17,-17,22,22,-22,-22,2,2,-2,-2,22,22,-22,-22,7,7,-7,-7,21,21,-21,-21,3,3,-3,-3,13,13,-13,-13,18,18,-18,-18,22,22,-22,-22,4,4,-4,-4,10,10,-10,-10,20,20,-20,-20,22,22,-22,-22,8,8,-8,-8,12,12,-12,-12,19,19,-19,-19,21,21,-21,-21,5,5,-5,-5,22,22,-22,-22,16,16,-16,-16,15,15,-15,-15,17,17,-17,-17,6,6,-6,-6,14,14,-14,-14,18,18,-18,-18,22,22,-22,-22,11,11,-11,-11,20,20,-20,-20,9,9,-9,-9,21,21,-21,-21,0,0,23,-23,1,1,-1,-1,13,13,-13,-13,19,19,-19,-19,23,23,-23,-23,2,2,-2,-2,7,7,-7,-7,22,22,-22,-22,23,23,-23,-23,3,3,-3,-3,23,23,-23,-23,10,10,-10,-10,21,21,-21,-21,12,12,-12,-12,20,20,-20,-20,4,4,-4,-4,16,16,-16,-16,17,17,-17,-17,23,23,-23,-23,8,8,-8,-8,22,22,-22,-22,15,15,-15,-15,18,18,-18,-18,5,5,-5,-5,23,23,-23,-23,14,14,-14,-14,19,19,-19,-19,11,11,-11,-11,21,21,-21,-21,6,6,-6,-6,9,9,-9,-9,22,22,-22,-22,23,23,-23,-23,13,13,-13,-13,20,20,-20,-20,0,0,24,-24,1,1,-1,-1,24,24,-24,-24,7,7,-7,-7,17,17,-17,-17,23,23,-23,-23,2,2,-2,-2,16,16,-16,-16,18,18,-18,-18,24,24,-24,-24,10,10,-10,-10,22,22,-22,-22,3,3,-3,-3,12,12,-12,-12,21,21,-21,-21,24,24,-24,-24,15,15,-15,-15,19,19,-19,-19,4,4,-4,-4,24,24,-24,-24,8,8,-8,-8,23,23,-23,-23,14,14,-14,-14,20,20,-20,-20,5,5,-5,-5,24,24,-24,-24,11,11,-11,-11,22,22,-22,-22,9,9,-9,-9,13,13,-13,-13,21,21,-21,-21,23,23,-23,-23,6,6,-6,-6,24,24,-24,-24,17,17,-17,-17,18,18,-18,-18,16,16,-16,-16,19,19,-19,-19,0,0,7,7,-7,-7,15,15,-15,-15,20,20,-20,-20,24,24,-24,-24,25,-25,1,1,-1,-1,25,25,-25,-25,12,12,-12,-12,22,22,-22,-22,2,2,-2,-2,10,10,-10,-10,23,23,-23,-23,25,25,-25,-25,3,3,-3,-3,25,25,-25,-25,14,14,-14,-14,21,21,-21,-21,8,8,-8,-8,24,24,-24,-24,4,4,-4,-4,25,25,-25,-25,18,18,-18,-18,5,5,-5,-5,11,11,-11,-11,17,17,-17,-17,19,19,-19,-19,23,23,-23,-23,25,25,-25,-25,13,13,-13,-13,22,22,-22,-22,16,16,-16,-16,20,20,-20,-20,9,9,-9,-9,24,24,-24,-24,6,6,-6,-6,25,25,-25,-25,15,15,-15,-15,21,21,-21,-21,12,12,-12,-12,23,23,-23,-23,7,7,-7,-7,25,25,-25,-25,0,0,10,10,-10,-10,24,24,-24,-24,26,-26,1,1,-1,-1,26,26,-26,-26,2,2,-2,-2,14,14,-14,-14,22,22,-22,-22,26,26,-26,-26,3,3,-3,-3,18,18,-18,-18,19,19,-19,-19,26,26,-26,-26,8,8,-8,-8,17,17,-17,-17,20,20,-20,-20,25,25,-25,-25,4,4,-4,-4,26,26,-26,-26,11,11,-11,-11,16,16,-16,-16,21,21,-21,-21,24,24,-24,-24,13,13,-13,-13,23,23,-23,-23,5,5,-5,-5,26,26,-26,-26,9,9,-9,-9,25,25,-25,-25,15,15,-15,-15,22,22,-22,-22,6,6,-6,-6,26,26,-26,-26,12,12,-12,-12,24,24,-24,-24,19,19,-19,-19,18,18,-18,-18,20,20,-20,-20,7,7,-7,-7,10,10,-10,-10,14,14,-14,-14,23,23,-23,-23,25,25,-25,-25,26,26,-26,-26,0,0,27,-27,1,1,-1,-1,17,17,-17,-17,21,21,-21,-21,27,27,-27,-27,2,2,-2,-2,27,27,-27,-27,3,3,-3,-3,27,27,-27,-27,8,8,-8,-8,16,16,-16,-16,22,22,-22,-22,26,26,-26,-26,4,4,-4,-4,13,13,-13,-13,24,24,-24,-24,27,27,-27,-27,11,11,-11,-11,25,25,-25,-25,5,5,-5,-5,15,15,-15,-15,23,23,-23,-23,27,27,-27,-27,9,9,-9,-9,26,26,-26,-26,19,19,-19,-19,20,20,-20,-20,6,6,-6,-6,18,18,-18,-18,21,21,-21,-21,27,27,-27,-27,12,12,-12,-12,25,25,-25,-25,14,14,-14,-14,24,24,-24,-24,17,17,-17,-17,22,22,-22,-22,10,10,-10,-10,26,26,-26,-26,7,7,-7,-7,27,27,-27,-27,0,0,28,-28,1,1,-1,-1,16,16,-16,-16,23,23,-23,-23,28,28,-28,-28,2,2,-2,-2,28,28,-28,-28,3,3,-3,-3,8,8,-8,-8,27,27,-27,-27,28,28,-28,-28,13,13,-13,-13,25,25,-25,-25,11,11,-11,-11,26,26,-26,-26,4,4,-4,-4,20,20,-20,-20,28,28,-28,-28,15,15,-15,-15,24,24,-24,-24,19,19,-19,-19,21,21,-21,-21,18,18,-18,-18,22,22,-22,-22,5,5,-5,-5,28,28,-28,-28,9,9,-9,-9,27,27,-27,-27,17,17,-17,-17,23,23,-23,-23,6,6,-6,-6,12,12,-12,-12,26,26,-26,-26,28,28,-28,-28,14,14,-14,-14,25,25,-25,-25,10,10,-10,-10,27,27,-27,-27,16,16,-16,-16,24,24,-24,-24,7,7,-7,-7,28,28,-28,-28,0,0,20,20,-20,-20,21,21,-21,-21,29,-29,1,1,-1,-1,29,29,-29,-29,2,2,-2,-2,13,13,-13,-13,19,19,-19,-19,22,22,-22,-22,26,26,-26,-26,29,29,-29,-29,8,8,-8,-8,28,28,-28,-28,3,3,-3,-3,11,11,-11,-11,15,15,-15,-15,25,25,-25,-25,27,27,-27,-27,29,29,-29,-29,18,18,-18,-18,23,23,-23,-23,4,4,-4,-4,29,29,-29,-29,9,9,-9,-9,17,17,-17,-17,24,24,-24,-24,28,28,-28,-28,5,5,-5,-5,29,29,-29,-29,14,14,-14,-14,26,26,-26,-26,12,12,-12,-12,27,27,-27,-27,6,6,-6,-6,29,29,-29,-29,16,16,-16,-16,25,25,-25,-25,21,21,-21,-21,10,10,-10,-10,20,20,-20,-20,22,22,-22,-22,28,28,-28,-28,7,7,-7,-7,19,19,-19,-19,23,23,-23,-23,29,29,-29,-29,13,13,-13,-13,27,27,-27,-27,0,0,18,18,-18,-18,24,24,-24,-24,30,-30,1,1,-1,-1,15,15,-15,-15,26,26,-26,-26,30,30,-30,-30,2,2,-2,-2,30,30,-30,-30,8,8,-8,-8,11,11,-11,-11,28,28,-28,-28,29,29,-29,-29,3,3,-3,-3,30,30,-30,-30,17,17,-17,-17,25,25,-25,-25,4,4,-4,-4,30,30,-30,-30,9,9,-9,-9,29,29,-29,-29,5,5,-5,-5,14,14,-14,-14,21,21,-21,-21,22,22,-22,-22,27,27,-27,-27,30,30,-30,-30,12,12,-12,-12,28,28,-28,-28,20,20,-20,-20,23,23,-23,-23,16,16,-16,-16,26,26,-26,-26,6,6,-6,-6,30,30,-30,-30,19,19,-19,-19,24,24,-24,-24,10,10,-10,-10,29,29,-29,-29,7,7,-7,-7,18,18,-18,-18,25,25,-25,-25,30,30,-30,-30,13,13,-13,-13,28,28,-28,-28,15,15,-15,-15,27,27,-27,-27,0,0,31,-31,1,1,-1,-1,11,11,-11,-11,29,29,-29,-29,31,31,-31,-31,8,8,-8,-8,30,30,-30,-30,2,2,-2,-2,17,17,-17,-17,26,26,-26,-26,31,31,-31,-31,22,22,-22,-22,3,3,-3,-3,21,21,-21,-21,23,23,-23,-23,31,31,-31,-31,20,20,-20,-20,24,24,-24,-24,4,4,-4,-4,31,31,-31,-31,14,14,-14,-14,28,28,-28,-28,9,9,-9,-9,30,30,-30,-30,12,12,-12,-12,16,16,-16,-16,27,27,-27,-27,29,29,-29,-29,5,5,-5,-5,19,19,-19,-19,25,25,-25,-25,31,31,-31,-31,6,6,-6,-6,31,31,-31,-31,10,10,-10,-10,18,18,-18,-18,26,26,-26,-26,30,30,-30,-30,15,15,-15,-15,28,28,-28,-28,7,7,-7,-7,13,13,-13,-13,29,29,-29,-29,31,31,-31,-31,22,22,-22,-22,23,23,-23,-23,21,21,-21,-21,24,24,-24,-24,17,17,-17,-17,27,27,-27,-27,11,11,-11,-11,30,30,-30,-30,0,0,32,-32,1,1,-1,-1,8,8,-8,-8,20,20,-20,-20,25,25,-25,-25,31,31,-31,-31,32,32,-32,-32,2,2,-2,-2,32,32,-32,-32,3,3,-3,-3,32,32,-32,-32,14,14,-14,-14,19,19,-19,-19,26,26,-26,-26,29,29,-29,-29,4,4,-4,-4,16,16,-16,-16,28,28,-28,-28,32,32,-32,-32,9,9,-9,-9,31,31,-31,-31,12,12,-12,-12,30,30,-30,-30,5,5,-5,-5,32,32,-32,-32,18,18,-18,-18,27,27,-27,-27,23,23,-23,-23,6,6,-6,-6,22,22,-22,-22,24,24,-24,-24,32,32,-32,-32,10,10,-10,-10,31,31,-31,-31,15,15,-15,-15,21,21,-21,-21,25,25,-25,-25,29,29,-29,-29,13,13,-13,-13,30,30,-30,-30,7,7,-7,-7,17,17,-17,-17,28,28,-28,-28,32,32,-32,-32,20,20,-20,-20,26,26,-26,-26,11,11,-11,-11,31,31,-31,-31,8,8,-8,-8,32,32,-32,-32,0,0,33,-33,1,1,-1,-1,19,19,-19,-19,27,27,-27,-27,33,33,-33,-33,2,2,-2,-2,33,33,-33,-33,14,14,-14,-14,30,30,-30,-30,16,16,-16,-16,29,29,-29,-29,3,3,-3,-3,33,33,-33,-33,4,4,-4,-4,9,9,-9,-9,12,12,-12,-12,23,23,-23,-23,24,24,-24,-24,31,31,-31,-31,32,32,-32,-32,33,33,-33,-33,18,18,-18,-18,28,28,-28,-28,22,22,-22,-22,25,25,-25,-25,5,5,-5,-5,33,33,-33,-33,21,21,-21,-21,26,26,-26,-26,10,10,-10,-10,32,32,-32,-32,6,6,-6,-6,15,15,-15,-15,30,30,-30,-30,33,33,-33,-33,20,20,-20,-20,27,27,-27,-27,13,13,-13,-13,17,17,-17,-17,29,29,-29,-29,31,31,-31,-31,7,7,-7,-7,33,33,-33,-33,11,11,-11,-11,19,19,-19,-19,28,28,-28,-28,32,32,-32,-32,24,24,-24,-24,8,8,-8,-8,33,33,-33,-33,23,23,-23,-23,25,25,-25,-25,0,0,16,16,-16,-16,30,30,-30,-30,34,-34,1,1,-1,-1,14,14,-14,-14,31,31,-31,-31,34,34,-34,-34,2,2,-2,-2,22,22,-22,-22,26,26,-26,-26,34,34,-34,-34,3,3,-3,-3,18,18,-18,-18,29,29,-29,-29,34,34,-34,-34,12,12,-12,-12,32,32,-32,-32,9,9,-9,-9,21,21,-21,-21,27,27,-27,-27,33,33,-33,-33,4,4,-4,-4,34,34,-34,-34,5,5,-5,-5,34,34,-34,-34,20,20,-20,-20,28,28,-28,-28,15,15,-15,-15,31,31,-31,-31,10,10,-10,-10,17,17,-17,-17,30,30,-30,-30,33,33,-33,-33,6,6,-6,-6,34,34,-34,-34,13,13,-13,-13,32,32,-32,-32,24,24,-24,-24,25,25,-25,-25,19,19,-19,-19,29,29,-29,-29,7,7,-7,-7,23,23,-23,-23,26,26,-26,-26,34,34,-34,-34,11,11,-11,-11,33,33,-33,-33,22,22,-22,-22,27,27,-27,-27,16,16,-16,-16,31,31,-31,-31,8,8,-8,-8,14,14,-14,-14,32,32,-32,-32,34,34,-34,-34,18,18,-18,-18,30,30,-30,-30,0,0,21,21,-21,-21,28,28,-28,-28,35,-35,1,1,-1,-1,35,35,-35,-35,2,2,-2,-2,35,35,-35,-35,12,12,-12,-12,33,33,-33,-33,3,3,-3,-3,35,35,-35,-35,9,9,-9,-9,34,34,-34,-34,4,4,-4,-4,20,20,-20,-20,29,29,-29,-29,35,35,-35,-35,15,15,-15,-15,32,32,-32,-32,5,5,-5,-5,17,17,-17,-17,25,25,-25,-25,31,31,-31,-31,35,35,-35,-35,24,24,-24,-24,26,26,-26,-26,10,10,-10,-10,34,34,-34,-34,13,13,-13,-13,23,23,-23,-23,27,27,-27,-27,33,33,-33,-33,6,6,-6,-6,19,19,-19,-19,30,30,-30,-30,35,35,-35,-35,22,22,-22,-22,28,28,-28,-28,7,7,-7,-7,35,35,-35,-35,11,11,-11,-11,34,34,-34,-34,16,16,-16,-16,32,32,-32,-32,21,21,-21,-21,29,29,-29,-29,14,14,-14,-14,18,18,-18,-18,31,31,-31,-31,33,33,-33,-33,8,8,-8,-8,35,35,-35,-35,0,0,36,-36,1,1,-1,-1,36,36,-36,-36,2,2,-2,-2,12,12,-12,-12,20,20,-20,-20,30,30,-30,-30,34,34,-34,-34,36,36,-36,-36,25,25,-25,-25,26,26,-26,-26,3,3,-3,-3,24,24,-24,-24,27,27,-27,-27,36,36,-36,-36,9,9,-9,-9,35,35,-35,-35,4,4,-4,-4,36,36,-36,-36,17,17,-17,-17,23,23,-23,-23,28,28,-28,-28,32,32,-32,-32,15,15,-15,-15,33,33,-33,-33,5,5,-5,-5,36,36,-36,-36,19,19,-19,-19,31,31,-31,-31,10,10,-10,-10,13,13,-13,-13,22,22,-22,-22,29,29,-29,-29,34,34,-34,-34,35,35,-35,-35,6,6,-6,-6,36,36,-36,-36,21,21,-21,-21,30,30,-30,-30,7,7,-7,-7,16,16,-16,-16,33,33,-33,-33,36,36,-36,-36,11,11,-11,-11,35,35,-35,-35,18,18,-18,-18,32,32,-32,-32,14,14,-14,-14,26,26,-26,-26,34,34,-34,-34,25,25,-25,-25,27,27,-27,-27,8,8,-8,-8,24,24,-24,-24,28,28,-28,-28,36,36,-36,-36,20,20,-20,-20,31,31,-31,-31,0,0,12,12,-12,-12,35,35,-35,-35,37,-37,1,1,-1,-1,23,23,-23,-23,29,29,-29,-29,37,37,-37,-37,2,2,-2,-2,37,37,-37,-37,9,9,-9,-9,36,36,-36,-36,3,3,-3,-3,17,17,-17,-17,33,33,-33,-33,37,37,-37,-37,15,15,-15,-15,34,34,-34,-34,22,22,-22,-22,30,30,-30,-30,4,4,-4,-4,19,19,-19,-19,32,32,-32,-32,37,37,-37,-37,5,5,-5,-5,13,13,-13,-13,35,35,-35,-35,37,37,-37,-37,10,10,-10,-10,36,36,-36,-36,21,21,-21,-21,31,31,-31,-31,6,6,-6,-6,26,26,-26,-26,27,27,-27,-27,37,37,-37,-37,25,25,-25,-25,28,28,-28,-28,16,16,-16,-16,34,34,-34,-34,18,18,-18,-18,33,33,-33,-33,11,11,-11,-11,24,24,-24,-24,29,29,-29,-29,36,36,-36,-36,7,7,-7,-7,37,37,-37,-37,14,14,-14,-14,35,35,-35,-35,20,20,-20,-20,32,32,-32,-32,23,23,-23,-23,30,30,-30,-30,8,8,-8,-8,37,37,-37,-37,12,12,-12,-12,36,36,-36,-36,0,0,38,-38,1,1,-1,-1,17,17,-17,-17,22,22,-22,-22,31,31,-31,-31,34,34,-34,-34,38,38,-38,-38,2,2,-2,-2,38,38,-38,-38,9,9,-9,-9,15,15,-15,-15,19,19,-19,-19,33,33,-33,-33,35,35,-35,-35,37,37,-37,-37,3,3,-3,-3,38,38,-38,-38,27,27,-27,-27,4,4,-4,-4,26,26,-26,-26,28,28,-28,-28,38,38,-38,-38,13,13,-13,-13,21,21,-21,-21,32,32,-32,-32,36,36,-36,-36,25,25,-25,-25,29,29,-29,-29,5,5,-5,-5,10,10,-10,-10,37,37,-37,-37,38,38,-38,-38,24,24,-24,-24,30,30,-30,-30,6,6,-6,-6,18,18,-18,-18,34,34,-34,-34,38,38,-38,-38,16,16,-16,-16,35,35,-35,-35,20,20,-20,-20,33,33,-33,-33,11,11,-11,-11,23,23,-23,-23,31,31,-31,-31,37,37,-37,-37,14,14,-14,-14,36,36,-36,-36,7,7,-7,-7,38,38,-38,-38,8,8,-8,-8,22,22,-22,-22,32,32,-32,-32,38,38,-38,-38,12,12,-12,-12,27,27,-27,-27,28,28,-28,-28,37,37,-37,-37,17,17,-17,-17,35,35,-35,-35,19,19,-19,-19,26,26,-26,-26,29,29,-29,-29,34,34,-34,-34,0,0,15,15,-15,-15,36,36,-36,-36,39,-39,1,1,-1,-1,39,39,-39,-39,2,2,-2,-2,9,9,-9,-9,25,25,-25,-25,30,30,-30,-30,38,38,-38,-38,39,39,-39,-39,3,3,-3,-3,21,21,-21,-21,33,33,-33,-33,39,39,-39,-39,4,4,-4,-4,24,24,-24,-24,31,31,-31,-31,39,39,-39,-39,13,13,-13,-13,37,37,-37,-37,10,10,-10,-10,38,38,-38,-38,5,5,-5,-5,39,39,-39,-39,18,18,-18,-18,35,35,-35,-35,16,16,-16,-16,36,36,-36,-36,23,23,-23,-23,32,32,-32,-32,20,20,-20,-20,34,34,-34,-34,6,6,-6,-6,39,39,-39,-39,11,11,-11,-11,14,14,-14,-14,37,37,-37,-37,38,38,-38,-38,28,28,-28,-28,7,7,-7,-7,27,27,-27,-27,29,29,-29,-29,39,39,-39,-39,22,22,-22,-22,33,33,-33,-33,26,26,-26,-26,30,30,-30,-30,8,8,-8,-8,17,17,-17,-17,36,36,-36,-36,39,39,-39,-39,19,19,-19,-19,25,25,-25,-25,31,31,-31,-31,35,35,-35,-35,12,12,-12,-12,38,38,-38,-38,15,15,-15,-15,37,37,-37,-37,21,21,-21,-21,34,34,-34,-34,0,0,24,24,-24,-24,32,32,-32,-32,40,-40,1,1,-1,-1,40,40,-40,-40,9,9,-9,-9,39,39,-39,-39,2,2,-2,-2,40,40,-40,-40,3,3,-3,-3,40,40,-40,-40,13,13,-13,-13,38,38,-38,-38,4,4,-4,-4,40,40,-40,-40,23,23,-23,-23,33,33,-33,-33,18,18,-18,-18,36,36,-36,-36,10,10,-10,-10,39,39,-39,-39,5,5,-5,-5,16,16,-16,-16,20,20,-20,-20,28,28,-28,-28,29,29,-29,-29,35,35,-35,-35,37,37,-37,-37,40,40,-40,-40,27,27,-27,-27,30,30,-30,-30,6,6,-6,-6,40,40,-40,-40,26,26,-26,-26,31,31,-31,-31,14,14,-14,-14,22,22,-22,-22,34,34,-34,-34,38,38,-38,-38,11,11,-11,-11,39,39,-39,-39,7,7,-7,-7,25,25,-25,-25,32,32,-32,-32,40,40,-40,-40,19,19,-19,-19,36,36,-36,-36,17,17,-17,-17,37,37,-37,-37,8,8,-8,-8,40,40,-40,-40,12,12,-12,-12,24,24,-24,-24,33,33,-33,-33,39,39,-39,-39,21,21,-21,-21,35,35,-35,-35,15,15,-15,-15,38,38,-38,-38,0,0,9,9,-9,-9,40,40,-40,-40,41,-41,1,1,-1,-1,29,29,-29,-29,41,41,-41,-41,28,28,-28,-28,30,30,-30,-30,2,2,-2,-2,23,23,-23,-23,34,34,-34,-34,41,41,-41,-41,3,3,-3,-3,13,13,-13,-13,27,27,-27,-27,31,31,-31,-31,39,39,-39,-39,41,41,-41,-41,18,18,-18,-18,37,37,-37,-37,20,20,-20,-20,36,36,-36,-36,4,4,-4,-4,41,41,-41,-41,10,10,-10,-10,16,16,-16,-16,26,26,-26,-26,32,32,-32,-32,38,38,-38,-38,40,40,-40,-40,5,5,-5,-5,41,41,-41,-41,22,22,-22,-22,35,35,-35,-35,25,25,-25,-25,33,33,-33,-33,6,6,-6,-6,14,14,-14,-14,39,39,-39,-39,41,41,-41,-41,11,11,-11,-11,40,40,-40,-40,7,7,-7,-7,19,19,-19,-19,37,37,-37,-37,41,41,-41,-41,24,24,-24,-24,34,34,-34,-34,17,17,-17,-17,38,38,-38,-38,21,21,-21,-21,36,36,-36,-36,29,29,-29,-29,30,30,-30,-30,12,12,-12,-12,40,40,-40,-40,8,8,-8,-8,28,28,-28,-28,31,31,-31,-31,41,41,-41,-41,15,15,-15,-15,39,39,-39,-39,27,27,-27,-27,32,32,-32,-32,23,23,-23,-23,35,35,-35,-35,9,9,-9,-9,41,41,-41,-41,0,0,42,-42,1,1,-1,-1,26,26,-26,-26,33,33,-33,-33,42,42,-42,-42,2,2,-2,-2,18,18,-18,-18,38,38,-38,-38,42,42,-42,-42,13,13,-13,-13,20,20,-20,-20,37,37,-37,-37,40,40,-40,-40,3,3,-3,-3,42,42,-42,-42,16,16,-16,-16,39,39,-39,-39,4,4,-4,-4,22,22,-22,-22,36,36,-36,-36,42,42,-42,-42,10,10,-10,-10,25,25,-25,-25,34,34,-34,-34,41,41,-41,-41,5,5,-5,-5,42,42,-42,-42,14,14,-14,-14,40,40,-40,-40,6,6,-6,-6,30,30,-30,-30,42,42,-42,-42,24,24,-24,-24,35,35,-35,-35,11,11,-11,-11,29,29,-29,-29,31,31,-31,-31,41,41,-41,-41,19,19,-19,-19,38,38,-38,-38,28,28,-28,-28,32,32,-32,-32,17,17,-17,-17,21,21,-21,-21,37,37,-37,-37,39,39,-39,-39,7,7,-7,-7,42,42,-42,-42,27,27,-27,-27,33,33,-33,-33,12,12,-12,-12,15,15,-15,-15,23,23,-23,-23,36,36,-36,-36,40,40,-40,-40,41,41,-41,-41,8,8,-8,-8,42,42,-42,-42,26,26,-26,-26,34,34,-34,-34,20,20,-20,-20,38,38,-38,-38,9,9,-9,-9,18,18,-18,-18,39,39,-39,-39,42,42,-42,-42,0,0,43,-43,1,1,-1,-1,13,13,-13,-13,25,25,-25,-25,35,35,-35,-35,41,41,-41,-41,43,43,-43,-43,2,2,-2,-2,22,22,-22,-22,37,37,-37,-37,43,43,-43,-43,16,16,-16,-16,40,40,-40,-40,3,3,-3,-3,43,43,-43,-43,30,30,-30,-30,31,31,-31,-31,10,10,-10,-10,42,42,-42,-42,4,4,-4,-4,29,29,-29,-29,32,32,-32,-32,43,43,-43,-43,24,24,-24,-24,36,36,-36,-36,28,28,-28,-28,33,33,-33,-33,5,5,-5,-5,43,43,-43,-43,14,14,-14,-14,41,41,-41,-41,19,19,-19,-19,39,39,-39,-39,6,6,-6,-6,11,11,-11,-11,21,21,-21,-21,27,27,-27,-27,34,34,-34,-34,38,38,-38,-38,42,42,-42,-42,43,43,-43,-43,17,17,-17,-17,40,40,-40,-40,7,7,-7,-7,23,23,-23,-23,37,37,-37,-37,43,43,-43,-43,26,26,-26,-26,35,35,-35,-35,15,15,-15,-15,41,41,-41,-41,12,12,-12,-12,42,42,-42,-42,8,8,-8,-8,43,43,-43,-43,20,20,-20,-20,25,25,-25,-25,36,36,-36,-36,39,39,-39,-39,31,31,-31,-31,18,18,-18,-18,30,30,-30,-30,32,32,-32,-32,40,40,-40,-40,22,22,-22,-22,38,38,-38,-38,9,9,-9,-9,29,29,-29,-29,33,33,-33,-33,43,43,-43,-43,13,13,-13,-13,42,42,-42,-42,0,0,44,-44,1,1,-1,-1,16,16,-16,-16,41,41,-41,-41,44,44,-44,-44,2,2,-2,-2,28,28,-28,-28,34,34,-34,-34,44,44,-44,-44,3,3,-3,-3,24,24,-24,-24,37,37,-37,-37,44,44,-44,-44,10,10,-10,-10,43,43,-43,-43,4,4,-4,-4,44,44,-44,-44,27,27,-27,-27,35,35,-35,-35,14,14,-14,-14,42,42,-42,-42,5,5,-5,-5,19,19,-19,-19,40,40,-40,-40,44,44,-44,-44,21,21,-21,-21,39,39,-39,-39,11,11,-11,-11,17,17,-17,-17,41,41,-41,-41,43,43,-43,-43,6,6,-6,-6,26,26,-26,-26,36,36,-36,-36,44,44,-44,-44,23,23,-23,-23,38,38,-38,-38,7,7,-7,-7,31,31,-31,-31,32,32,-32,-32,44,44,-44,-44,15,15,-15,-15,30,30,-30,-30,33,33,-33,-33,42,42,-42,-42,12,12,-12,-12,43,43,-43,-43,25,25,-25,-25,37,37,-37,-37,29,29,-29,-29,34,34,-34,-34,8,8,-8,-8,20,20,-20,-20,40,40,-40,-40,44,44,-44,-44,18,18,-18,-18,22,22,-22,-22,39,39,-39,-39,41,41,-41,-41,28,28,-28,-28,35,35,-35,-35,9,9,-9,-9,44,44,-44,-44,13,13,-13,-13,43,43,-43,-43,16,16,-16,-16,24,24,-24,-24,38,38,-38,-38,42,42,-42,-42,0,0,27,27,-27,-27,36,36,-36,-36,45,-45,1,1,-1,-1,45,45,-45,-45,2,2,-2,-2,45,45,-45,-45,3,3,-3,-3,45,45,-45,-45,10,10,-10,-10,44,44,-44,-44,4,4,-4,-4,21,21,-21,-21,40,40,-40,-40,45,45,-45,-45,19,19,-19,-19,41,41,-41,-41,14,14,-14,-14,26,26,-26,-26,37,37,-37,-37,43,43,-43,-43,32,32,-32,-32,5,5,-5,-5,23,23,-23,-23,31,31,-31,-31,33,33,-33,-33,39,39,-39,-39,45,45,-45,-45,17,17,-17,-17,42,42,-42,-42,30,30,-30,-30,34,34,-34,-34,11,11,-11,-11,44,44,-44,-44,6,6,-6,-6,45,45,-45,-45,29,29,-29,-29,35,35,-35,-35,25,25,-25,-25,38,38,-38,-38,7,7,-7,-7,15,15,-15,-15,43,43,-43,-43,45,45,-45,-45,12,12,-12,-12,28,28,-28,-28,36,36,-36,-36,44,44,-44,-44,20,20,-20,-20,41,41,-41,-41,22,22,-22,-22,40,40,-40,-40,18,18,-18,-18,42,42,-42,-42,8,8,-8,-8,45,45,-45,-45,24,24,-24,-24,39,39,-39,-39,27,27,-27,-27,37,37,-37,-37,13,13,-13,-13,16,16,-16,-16,43,43,-43,-43,44,44,-44,-44,9,9,-9,-9,45,45,-45,-45,32,32,-32,-32,33,33,-33,-33,0,0,46,-46,1,1,-1,-1,31,31,-31,-31,34,34,-34,-34,46,46,-46,-46,2,2,-2,-2,26,26,-26,-26,38,38,-38,-38,46,46,-46,-46,21,21,-21,-21,41,41,-41,-41,3,3,-3,-3,10,10,-10,-10,19,19,-19,-19,30,30,-30,-30,35,35,-35,-35,42,42,-42,-42,45,45,-45,-45,46,46,-46,-46,23,23,-23,-23,40,40,-40,-40,4,4,-4,-4,14,14,-14,-14,44,44,-44,-44,46,46,-46,-46,29,29,-29,-29,36,36,-36,-36,17,17,-17,-17,43,43,-43,-43,5,5,-5,-5,46,46,-46,-46,11,11,-11,-11,25,25,-25,-25,39,39,-39,-39,45,45,-45,-45,6,6,-6,-6,46,46,-46,-46,28,28,-28,-28,37,37,-37,-37,15,15,-15,-15,44,44,-44,-44,20,20,-20,-20,42,42,-42,-42,7,7,-7,-7,22,22,-22,-22,41,41,-41,-41,46,46,-46,-46,12,12,-12,-12,45,45,-45,-45,18,18,-18,-18,27,27,-27,-27,38,38,-38,-38,43,43,-43,-43,24,24,-24,-24,40,40,-40,-40,33,33,-33,-33,8,8,-8,-8,32,32,-32,-32,34,34,-34,-34,46,46,-46,-46,31,31,-31,-31,35,35,-35,-35,16,16,-16,-16,44,44,-44,-44,13,13,-13,-13,45,45,-45,-45,30,30,-30,-30,36,36,-36,-36,9,9,-9,-9,26,26,-26,-26,39,39,-39,-39,46,46,-46,-46,21,21,-21,-21,42,42,-42,-42,0,0,47,-47,1,1,-1,-1,19,19,-19,-19,23,23,-23,-23,29,29,-29,-29,37,37,-37,-37,41,41,-41,-41,43,43,-43,-43,47,47,-47,-47,2,2,-2,-2,47,47,-47,-47,10,10,-10,-10,46,46,-46,-46,3,3,-3,-3,47,47,-47,-47,14,14,-14,-14,45,45,-45,-45,4,4,-4,-4,17,17,-17,-17,25,25,-25,-25,40,40,-40,-40,44,44,-44,-44,47,47,-47,-47,28,28,-28,-28,38,38,-38,-38,5,5,-5,-5,47,47,-47,-47,11,11,-11,-11,46,46,-46,-46,6,6,-6,-6,33,33,-33,-33,34,34,-34,-34,47,47,-47,-47,22,22,-22,-22,42,42,-42,-42,20,20,-20,-20,32,32,-32,-32,35,35,-35,-35,43,43,-43,-43,15,15,-15,-15,27,27,-27,-27,39,39,-39,-39,45,45,-45,-45,24,24,-24,-24,31,31,-31,-31,36,36,-36,-36,41,41,-41,-41,7,7,-7,-7,47,47,-47,-47,12,12,-12,-12,18,18,-18,-18,44,44,-44,-44,46,46,-46,-46,30,30,-30,-30,37,37,-37,-37,8,8,-8,-8,47,47,-47,-47,26,26,-26,-26,40,40,-40,-40,16,16,-16,-16,45,45,-45,-45,13,13,-13,-13,29,29,-29,-29,38,38,-38,-38,46,46,-46,-46,9,9,-9,-9,21,21,-21,-21,43,43,-43,-43,47,47,-47,-47,23,23,-23,-23,42,42,-42,-42,19,19,-19,-19,44,44,-44,-44,0,0,48,-48,1,1,-1,-1,28,28,-28,-28,39,39,-39,-39,48,48,-48,-48,25,25,-25,-25,41,41,-41,-41,2,2,-2,-2,48,48,-48,-48,10,10,-10,-10,47,47,-47,-47,14,14,-14,-14,34,34,-34,-34,46,46,-46,-46,3,3,-3,-3,48,48,-48,-48,17,17,-17,-17,33,33,-33,-33,35,35,-35,-35,45,45,-45,-45,4,4,-4,-4,32,32,-32,-32,36,36,-36,-36,48,48,-48,-48,5,5,-5,-5,27,27,-27,-27,40,40,-40,-40,48,48,-48,-48,11,11,-11,-11,31,31,-31,-31,37,37,-37,-37,47,47,-47,-47,22,22,-22,-22,43,43,-43,-43,20,20,-20,-20,44,44,-44,-44,6,6,-6,-6,24,24,-24,-24,42,42,-42,-42,48,48,-48,-48,15,15,-15,-15,46,46,-46,-46,30,30,-30,-30,38,38,-38,-38,18,18,-18,-18,45,45,-45,-45,7,7,-7,-7,12,12,-12,-12,47,47,-47,-47,48,48,-48,-48,26,26,-26,-26,41,41,-41,-41,29,29,-29,-29,39,39,-39,-39,8,8,-8,-8,48,48,-48,-48,16,16,-16,-16,46,46,-46,-46,21,21,-21,-21,44,44,-44,-44,13,13,-13,-13,23,23,-23,-23,43,43,-43,-43,47,47,-47,-47,34,34,-34,-34,35,35,-35,-35,28,28,-28,-28,40,40,-40,-40,9,9,-9,-9,33,33,-33,-33,36,36,-36,-36,48,48,-48,-48,19,19,-19,-19,45,45,-45,-45,25,25,-25,-25,42,42,-42,-42,32,32,-32,-32,37,37,-37,-37,0,0,49,-49,1,1,-1,-1,49,49,-49,-49,10,10,-10,-10,48,48,-48,-48,2,2,-2,-2,14,14,-14,-14,17,17,-17,-17,31,31,-31,-31,38,38,-38,-38,46,46,-46,-46,47,47,-47,-47,49,49,-49,-49,3,3,-3,-3,27,27,-27,-27,41,41,-41,-41,49,49,-49,-49,4,4,-4,-4,49,49,-49,-49,22,22,-22,-22,44,44,-44,-44,30,30,-30,-30,39,39,-39,-39,11,11,-11,-11,20,20,-20,-20,24,24,-24,-24,43,43,-43,-43,45,45,-45,-45,48,48,-48,-48,5,5,-5,-5,49,49,-49,-49,15,15,-15,-15,47,47,-47,-47,6,6,-6,-6,49,49,-49,-49,18,18,-18,-18,26,26,-26,-26,42,42,-42,-42,46,46,-46,-46,29,29,-29,-29,40,40,-40,-40,12,12,-12,-12,48,48,-48,-48,7,7,-7,-7,35,35,-35,-35,49,49,-49,-49,34,34,-34,-34,36,36,-36,-36,33,33,-33,-33,37,37,-37,-37,8,8,-8,-8,16,16,-16,-16,23,23,-23,-23,28,28,-28,-28,41,41,-41,-41,44,44,-44,-44,47,47,-47,-47,49,49,-49,-49,21,21,-21,-21,45,45,-45,-45,32,32,-32,-32,38,38,-38,-38,13,13,-13,-13,48,48,-48,-48,25,25,-25,-25,43,43,-43,-43,19,19,-19,-19,46,46,-46,-46,9,9,-9,-9,31,31,-31,-31,39,39,-39,-39,49,49,-49,-49,27,27,-27,-27,42,42,-42,-42,17,17,-17,-17,47,47,-47,-47,0,0,14,14,-14,-14,30,30,-30,-30,40,40,-40,-40,48,48,-48,-48,50,-50}; + +const int expansion_pos_c[7845] = {0,1,-1,0,0,1,-1,1,-1,2,-2,0,0,2,-2,2,-2,1,-1,1,-1,2,-2,2,-2,3,-3,0,0,3,-3,3,-3,1,-1,1,-1,3,-3,3,-3,2,-2,2,-2,4,-4,0,0,4,-4,4,-4,1,-1,1,-1,3,-3,3,-3,4,-4,4,-4,2,-2,2,-2,5,-5,4,-4,4,-4,3,-3,3,-3,0,0,5,-5,5,-5,1,-1,1,-1,5,-5,5,-5,2,-2,2,-2,4,-4,4,-4,5,-5,5,-5,3,-3,3,-3,6,-6,0,0,6,-6,6,-6,1,-1,1,-1,6,-6,6,-6,2,-2,2,-2,5,-5,5,-5,4,-4,4,-4,6,-6,6,-6,3,-3,3,-3,7,-7,0,0,7,-7,7,-7,5,-5,5,-5,1,-1,1,-1,6,-6,6,-6,4,-4,4,-4,7,-7,7,-7,2,-2,2,-2,7,-7,7,-7,3,-3,3,-3,6,-6,6,-6,5,-5,5,-5,8,-8,0,0,8,-8,8,-8,7,-7,7,-7,4,-4,4,-4,1,-1,1,-1,8,-8,8,-8,2,-2,2,-2,6,-6,6,-6,8,-8,8,-8,3,-3,3,-3,7,-7,7,-7,5,-5,5,-5,8,-8,8,-8,4,-4,4,-4,9,-9,0,0,9,-9,9,-9,1,-1,1,-1,9,-9,9,-9,7,-7,7,-7,6,-6,6,-6,2,-2,2,-2,8,-8,8,-8,5,-5,5,-5,9,-9,9,-9,3,-3,3,-3,9,-9,9,-9,4,-4,4,-4,7,-7,7,-7,10,-10,8,-8,8,-8,6,-6,6,-6,0,0,10,-10,10,-10,1,-1,1,-1,10,-10,10,-10,2,-2,2,-2,9,-9,9,-9,5,-5,5,-5,10,-10,10,-10,3,-3,3,-3,8,-8,8,-8,7,-7,7,-7,10,-10,10,-10,4,-4,4,-4,9,-9,9,-9,6,-6,6,-6,11,-11,0,0,11,-11,11,-11,1,-1,1,-1,11,-11,11,-11,10,-10,10,-10,5,-5,5,-5,2,-2,2,-2,8,-8,8,-8,11,-11,11,-11,9,-9,9,-9,7,-7,7,-7,3,-3,3,-3,10,-10,10,-10,6,-6,6,-6,11,-11,11,-11,4,-4,4,-4,12,-12,0,0,12,-12,12,-12,9,-9,9,-9,8,-8,8,-8,1,-1,1,-1,11,-11,11,-11,5,-5,5,-5,12,-12,12,-12,2,-2,2,-2,10,-10,10,-10,7,-7,7,-7,12,-12,12,-12,3,-3,3,-3,11,-11,11,-11,6,-6,6,-6,12,-12,12,-12,4,-4,4,-4,9,-9,9,-9,10,-10,10,-10,8,-8,8,-8,13,-13,12,-12,12,-12,5,-5,5,-5,0,0,13,-13,13,-13,11,-11,11,-11,7,-7,7,-7,1,-1,1,-1,13,-13,13,-13,2,-2,2,-2,13,-13,13,-13,3,-3,3,-3,12,-12,12,-12,6,-6,6,-6,10,-10,10,-10,9,-9,9,-9,13,-13,13,-13,11,-11,11,-11,8,-8,8,-8,4,-4,4,-4,12,-12,12,-12,7,-7,7,-7,13,-13,13,-13,5,-5,5,-5,14,-14,0,0,14,-14,14,-14,1,-1,1,-1,14,-14,14,-14,10,-10,10,-10,2,-2,2,-2,11,-11,11,-11,9,-9,9,-9,14,-14,14,-14,13,-13,13,-13,6,-6,6,-6,3,-3,3,-3,12,-12,12,-12,8,-8,8,-8,14,-14,14,-14,4,-4,4,-4,13,-13,13,-13,7,-7,7,-7,14,-14,14,-14,11,-11,11,-11,10,-10,10,-10,5,-5,5,-5,15,-15,12,-12,12,-12,9,-9,9,-9,0,0,15,-15,15,-15,1,-1,1,-1,15,-15,15,-15,2,-2,2,-2,14,-14,14,-14,6,-6,6,-6,13,-13,13,-13,8,-8,8,-8,15,-15,15,-15,3,-3,3,-3,15,-15,15,-15,4,-4,4,-4,11,-11,11,-11,12,-12,12,-12,10,-10,10,-10,14,-14,14,-14,7,-7,7,-7,15,-15,15,-15,13,-13,13,-13,9,-9,9,-9,5,-5,5,-5,16,-16,0,0,16,-16,16,-16,1,-1,1,-1,16,-16,16,-16,14,-14,14,-14,8,-8,8,-8,2,-2,2,-2,15,-15,15,-15,6,-6,6,-6,16,-16,16,-16,12,-12,12,-12,11,-11,11,-11,3,-3,3,-3,13,-13,13,-13,10,-10,10,-10,16,-16,16,-16,4,-4,4,-4,15,-15,15,-15,7,-7,7,-7,14,-14,14,-14,9,-9,9,-9,16,-16,16,-16,5,-5,5,-5,12,-12,12,-12,17,-17,15,-15,15,-15,8,-8,8,-8,0,0,17,-17,17,-17,13,-13,13,-13,11,-11,11,-11,1,-1,1,-1,16,-16,16,-16,6,-6,6,-6,17,-17,17,-17,2,-2,2,-2,14,-14,14,-14,10,-10,10,-10,17,-17,17,-17,3,-3,3,-3,17,-17,17,-17,16,-16,16,-16,7,-7,7,-7,4,-4,4,-4,15,-15,15,-15,9,-9,9,-9,13,-13,13,-13,12,-12,12,-12,17,-17,17,-17,5,-5,5,-5,14,-14,14,-14,11,-11,11,-11,16,-16,16,-16,8,-8,8,-8,18,-18,0,0,18,-18,18,-18,17,-17,17,-17,15,-15,15,-15,10,-10,10,-10,6,-6,6,-6,1,-1,1,-1,18,-18,18,-18,2,-2,2,-2,18,-18,18,-18,3,-3,3,-3,16,-16,16,-16,9,-9,9,-9,17,-17,17,-17,13,-13,13,-13,7,-7,7,-7,18,-18,18,-18,14,-14,14,-14,12,-12,12,-12,4,-4,4,-4,15,-15,15,-15,11,-11,11,-11,18,-18,18,-18,5,-5,5,-5,17,-17,17,-17,8,-8,8,-8,16,-16,16,-16,10,-10,10,-10,18,-18,18,-18,6,-6,6,-6,19,-19,0,0,19,-19,19,-19,1,-1,1,-1,19,-19,19,-19,14,-14,14,-14,13,-13,13,-13,2,-2,2,-2,15,-15,15,-15,12,-12,12,-12,19,-19,19,-19,17,-17,17,-17,9,-9,9,-9,3,-3,3,-3,18,-18,18,-18,7,-7,7,-7,19,-19,19,-19,16,-16,16,-16,11,-11,11,-11,4,-4,4,-4,19,-19,19,-19,5,-5,5,-5,18,-18,18,-18,8,-8,8,-8,17,-17,17,-17,10,-10,10,-10,14,-14,14,-14,15,-15,15,-15,13,-13,13,-13,19,-19,19,-19,6,-6,6,-6,20,-20,16,-16,16,-16,12,-12,12,-12,0,0,20,-20,20,-20,1,-1,1,-1,20,-20,20,-20,2,-2,2,-2,18,-18,18,-18,9,-9,9,-9,20,-20,20,-20,3,-3,3,-3,19,-19,19,-19,17,-17,17,-17,11,-11,11,-11,7,-7,7,-7,20,-20,20,-20,4,-4,4,-4,15,-15,15,-15,14,-14,14,-14,18,-18,18,-18,10,-10,10,-10,20,-20,20,-20,19,-19,19,-19,16,-16,16,-16,13,-13,13,-13,8,-8,8,-8,5,-5,5,-5,17,-17,17,-17,12,-12,12,-12,20,-20,20,-20,6,-6,6,-6,21,-21,0,0,21,-21,21,-21,19,-19,19,-19,9,-9,9,-9,1,-1,1,-1,21,-21,21,-21,18,-18,18,-18,11,-11,11,-11,2,-2,2,-2,20,-20,20,-20,7,-7,7,-7,21,-21,21,-21,15,-15,15,-15,3,-3,3,-3,16,-16,16,-16,14,-14,14,-14,21,-21,21,-21,4,-4,4,-4,17,-17,17,-17,13,-13,13,-13,19,-19,19,-19,10,-10,10,-10,20,-20,20,-20,8,-8,8,-8,21,-21,21,-21,5,-5,5,-5,18,-18,18,-18,12,-12,12,-12,21,-21,21,-21,6,-6,6,-6,20,-20,20,-20,16,-16,16,-16,15,-15,15,-15,9,-9,9,-9,19,-19,19,-19,11,-11,11,-11,22,-22,0,0,22,-22,22,-22,17,-17,17,-17,14,-14,14,-14,1,-1,1,-1,22,-22,22,-22,2,-2,2,-2,21,-21,21,-21,7,-7,7,-7,22,-22,22,-22,18,-18,18,-18,13,-13,13,-13,3,-3,3,-3,22,-22,22,-22,20,-20,20,-20,10,-10,10,-10,4,-4,4,-4,21,-21,21,-21,19,-19,19,-19,12,-12,12,-12,8,-8,8,-8,22,-22,22,-22,5,-5,5,-5,16,-16,16,-16,17,-17,17,-17,15,-15,15,-15,22,-22,22,-22,18,-18,18,-18,14,-14,14,-14,6,-6,6,-6,20,-20,20,-20,11,-11,11,-11,21,-21,21,-21,9,-9,9,-9,23,-23,0,0,23,-23,23,-23,19,-19,19,-19,13,-13,13,-13,1,-1,1,-1,23,-23,23,-23,22,-22,22,-22,7,-7,7,-7,2,-2,2,-2,23,-23,23,-23,3,-3,3,-3,21,-21,21,-21,10,-10,10,-10,20,-20,20,-20,12,-12,12,-12,23,-23,23,-23,17,-17,17,-17,16,-16,16,-16,4,-4,4,-4,22,-22,22,-22,8,-8,8,-8,18,-18,18,-18,15,-15,15,-15,23,-23,23,-23,5,-5,5,-5,19,-19,19,-19,14,-14,14,-14,21,-21,21,-21,11,-11,11,-11,23,-23,23,-23,22,-22,22,-22,9,-9,9,-9,6,-6,6,-6,20,-20,20,-20,13,-13,13,-13,24,-24,0,0,24,-24,24,-24,1,-1,1,-1,23,-23,23,-23,17,-17,17,-17,7,-7,7,-7,24,-24,24,-24,18,-18,18,-18,16,-16,16,-16,2,-2,2,-2,22,-22,22,-22,10,-10,10,-10,24,-24,24,-24,21,-21,21,-21,12,-12,12,-12,3,-3,3,-3,19,-19,19,-19,15,-15,15,-15,24,-24,24,-24,4,-4,4,-4,23,-23,23,-23,8,-8,8,-8,20,-20,20,-20,14,-14,14,-14,24,-24,24,-24,5,-5,5,-5,22,-22,22,-22,11,-11,11,-11,23,-23,23,-23,21,-21,21,-21,13,-13,13,-13,9,-9,9,-9,24,-24,24,-24,6,-6,6,-6,18,-18,18,-18,17,-17,17,-17,19,-19,19,-19,16,-16,16,-16,25,-25,24,-24,24,-24,20,-20,20,-20,15,-15,15,-15,7,-7,7,-7,0,0,25,-25,25,-25,1,-1,1,-1,22,-22,22,-22,12,-12,12,-12,25,-25,25,-25,23,-23,23,-23,10,-10,10,-10,2,-2,2,-2,25,-25,25,-25,3,-3,3,-3,21,-21,21,-21,14,-14,14,-14,24,-24,24,-24,8,-8,8,-8,25,-25,25,-25,4,-4,4,-4,18,-18,18,-18,25,-25,25,-25,23,-23,23,-23,19,-19,19,-19,17,-17,17,-17,11,-11,11,-11,5,-5,5,-5,22,-22,22,-22,13,-13,13,-13,20,-20,20,-20,16,-16,16,-16,24,-24,24,-24,9,-9,9,-9,25,-25,25,-25,6,-6,6,-6,21,-21,21,-21,15,-15,15,-15,23,-23,23,-23,12,-12,12,-12,25,-25,25,-25,7,-7,7,-7,26,-26,24,-24,24,-24,10,-10,10,-10,0,0,26,-26,26,-26,1,-1,1,-1,26,-26,26,-26,22,-22,22,-22,14,-14,14,-14,2,-2,2,-2,26,-26,26,-26,19,-19,19,-19,18,-18,18,-18,3,-3,3,-3,25,-25,25,-25,20,-20,20,-20,17,-17,17,-17,8,-8,8,-8,26,-26,26,-26,4,-4,4,-4,24,-24,24,-24,21,-21,21,-21,16,-16,16,-16,11,-11,11,-11,23,-23,23,-23,13,-13,13,-13,26,-26,26,-26,5,-5,5,-5,25,-25,25,-25,9,-9,9,-9,22,-22,22,-22,15,-15,15,-15,26,-26,26,-26,6,-6,6,-6,24,-24,24,-24,12,-12,12,-12,19,-19,19,-19,20,-20,20,-20,18,-18,18,-18,26,-26,26,-26,25,-25,25,-25,23,-23,23,-23,14,-14,14,-14,10,-10,10,-10,7,-7,7,-7,27,-27,0,0,27,-27,27,-27,21,-21,21,-21,17,-17,17,-17,1,-1,1,-1,27,-27,27,-27,2,-2,2,-2,27,-27,27,-27,3,-3,3,-3,26,-26,26,-26,22,-22,22,-22,16,-16,16,-16,8,-8,8,-8,27,-27,27,-27,24,-24,24,-24,13,-13,13,-13,4,-4,4,-4,25,-25,25,-25,11,-11,11,-11,27,-27,27,-27,23,-23,23,-23,15,-15,15,-15,5,-5,5,-5,26,-26,26,-26,9,-9,9,-9,20,-20,20,-20,19,-19,19,-19,27,-27,27,-27,21,-21,21,-21,18,-18,18,-18,6,-6,6,-6,25,-25,25,-25,12,-12,12,-12,24,-24,24,-24,14,-14,14,-14,22,-22,22,-22,17,-17,17,-17,26,-26,26,-26,10,-10,10,-10,27,-27,27,-27,7,-7,7,-7,28,-28,0,0,28,-28,28,-28,23,-23,23,-23,16,-16,16,-16,1,-1,1,-1,28,-28,28,-28,2,-2,2,-2,28,-28,28,-28,27,-27,27,-27,8,-8,8,-8,3,-3,3,-3,25,-25,25,-25,13,-13,13,-13,26,-26,26,-26,11,-11,11,-11,28,-28,28,-28,20,-20,20,-20,4,-4,4,-4,24,-24,24,-24,15,-15,15,-15,21,-21,21,-21,19,-19,19,-19,22,-22,22,-22,18,-18,18,-18,28,-28,28,-28,5,-5,5,-5,27,-27,27,-27,9,-9,9,-9,23,-23,23,-23,17,-17,17,-17,28,-28,28,-28,26,-26,26,-26,12,-12,12,-12,6,-6,6,-6,25,-25,25,-25,14,-14,14,-14,27,-27,27,-27,10,-10,10,-10,24,-24,24,-24,16,-16,16,-16,28,-28,28,-28,7,-7,7,-7,29,-29,21,-21,21,-21,20,-20,20,-20,0,0,29,-29,29,-29,1,-1,1,-1,29,-29,29,-29,26,-26,26,-26,22,-22,22,-22,19,-19,19,-19,13,-13,13,-13,2,-2,2,-2,28,-28,28,-28,8,-8,8,-8,29,-29,29,-29,27,-27,27,-27,25,-25,25,-25,15,-15,15,-15,11,-11,11,-11,3,-3,3,-3,23,-23,23,-23,18,-18,18,-18,29,-29,29,-29,4,-4,4,-4,28,-28,28,-28,24,-24,24,-24,17,-17,17,-17,9,-9,9,-9,29,-29,29,-29,5,-5,5,-5,26,-26,26,-26,14,-14,14,-14,27,-27,27,-27,12,-12,12,-12,29,-29,29,-29,6,-6,6,-6,25,-25,25,-25,16,-16,16,-16,21,-21,21,-21,28,-28,28,-28,22,-22,22,-22,20,-20,20,-20,10,-10,10,-10,29,-29,29,-29,23,-23,23,-23,19,-19,19,-19,7,-7,7,-7,27,-27,27,-27,13,-13,13,-13,30,-30,24,-24,24,-24,18,-18,18,-18,0,0,30,-30,30,-30,26,-26,26,-26,15,-15,15,-15,1,-1,1,-1,30,-30,30,-30,2,-2,2,-2,29,-29,29,-29,28,-28,28,-28,11,-11,11,-11,8,-8,8,-8,30,-30,30,-30,3,-3,3,-3,25,-25,25,-25,17,-17,17,-17,30,-30,30,-30,4,-4,4,-4,29,-29,29,-29,9,-9,9,-9,30,-30,30,-30,27,-27,27,-27,22,-22,22,-22,21,-21,21,-21,14,-14,14,-14,5,-5,5,-5,28,-28,28,-28,12,-12,12,-12,23,-23,23,-23,20,-20,20,-20,26,-26,26,-26,16,-16,16,-16,30,-30,30,-30,6,-6,6,-6,24,-24,24,-24,19,-19,19,-19,29,-29,29,-29,10,-10,10,-10,30,-30,30,-30,25,-25,25,-25,18,-18,18,-18,7,-7,7,-7,28,-28,28,-28,13,-13,13,-13,27,-27,27,-27,15,-15,15,-15,31,-31,0,0,31,-31,31,-31,29,-29,29,-29,11,-11,11,-11,1,-1,1,-1,30,-30,30,-30,8,-8,8,-8,31,-31,31,-31,26,-26,26,-26,17,-17,17,-17,2,-2,2,-2,22,-22,22,-22,31,-31,31,-31,23,-23,23,-23,21,-21,21,-21,3,-3,3,-3,24,-24,24,-24,20,-20,20,-20,31,-31,31,-31,4,-4,4,-4,28,-28,28,-28,14,-14,14,-14,30,-30,30,-30,9,-9,9,-9,29,-29,29,-29,27,-27,27,-27,16,-16,16,-16,12,-12,12,-12,31,-31,31,-31,25,-25,25,-25,19,-19,19,-19,5,-5,5,-5,31,-31,31,-31,6,-6,6,-6,30,-30,30,-30,26,-26,26,-26,18,-18,18,-18,10,-10,10,-10,28,-28,28,-28,15,-15,15,-15,31,-31,31,-31,29,-29,29,-29,13,-13,13,-13,7,-7,7,-7,23,-23,23,-23,22,-22,22,-22,24,-24,24,-24,21,-21,21,-21,27,-27,27,-27,17,-17,17,-17,30,-30,30,-30,11,-11,11,-11,32,-32,0,0,32,-32,32,-32,31,-31,31,-31,25,-25,25,-25,20,-20,20,-20,8,-8,8,-8,1,-1,1,-1,32,-32,32,-32,2,-2,2,-2,32,-32,32,-32,3,-3,3,-3,29,-29,29,-29,26,-26,26,-26,19,-19,19,-19,14,-14,14,-14,32,-32,32,-32,28,-28,28,-28,16,-16,16,-16,4,-4,4,-4,31,-31,31,-31,9,-9,9,-9,30,-30,30,-30,12,-12,12,-12,32,-32,32,-32,5,-5,5,-5,27,-27,27,-27,18,-18,18,-18,23,-23,23,-23,32,-32,32,-32,24,-24,24,-24,22,-22,22,-22,6,-6,6,-6,31,-31,31,-31,10,-10,10,-10,29,-29,29,-29,25,-25,25,-25,21,-21,21,-21,15,-15,15,-15,30,-30,30,-30,13,-13,13,-13,32,-32,32,-32,28,-28,28,-28,17,-17,17,-17,7,-7,7,-7,26,-26,26,-26,20,-20,20,-20,31,-31,31,-31,11,-11,11,-11,32,-32,32,-32,8,-8,8,-8,33,-33,0,0,33,-33,33,-33,27,-27,27,-27,19,-19,19,-19,1,-1,1,-1,33,-33,33,-33,2,-2,2,-2,30,-30,30,-30,14,-14,14,-14,29,-29,29,-29,16,-16,16,-16,33,-33,33,-33,3,-3,3,-3,33,-33,33,-33,32,-32,32,-32,31,-31,31,-31,24,-24,24,-24,23,-23,23,-23,12,-12,12,-12,9,-9,9,-9,4,-4,4,-4,28,-28,28,-28,18,-18,18,-18,25,-25,25,-25,22,-22,22,-22,33,-33,33,-33,5,-5,5,-5,26,-26,26,-26,21,-21,21,-21,32,-32,32,-32,10,-10,10,-10,33,-33,33,-33,30,-30,30,-30,15,-15,15,-15,6,-6,6,-6,27,-27,27,-27,20,-20,20,-20,31,-31,31,-31,29,-29,29,-29,17,-17,17,-17,13,-13,13,-13,33,-33,33,-33,7,-7,7,-7,32,-32,32,-32,28,-28,28,-28,19,-19,19,-19,11,-11,11,-11,24,-24,24,-24,33,-33,33,-33,8,-8,8,-8,25,-25,25,-25,23,-23,23,-23,34,-34,30,-30,30,-30,16,-16,16,-16,0,0,34,-34,34,-34,31,-31,31,-31,14,-14,14,-14,1,-1,1,-1,34,-34,34,-34,26,-26,26,-26,22,-22,22,-22,2,-2,2,-2,34,-34,34,-34,29,-29,29,-29,18,-18,18,-18,3,-3,3,-3,32,-32,32,-32,12,-12,12,-12,33,-33,33,-33,27,-27,27,-27,21,-21,21,-21,9,-9,9,-9,34,-34,34,-34,4,-4,4,-4,34,-34,34,-34,5,-5,5,-5,28,-28,28,-28,20,-20,20,-20,31,-31,31,-31,15,-15,15,-15,33,-33,33,-33,30,-30,30,-30,17,-17,17,-17,10,-10,10,-10,34,-34,34,-34,6,-6,6,-6,32,-32,32,-32,13,-13,13,-13,25,-25,25,-25,24,-24,24,-24,29,-29,29,-29,19,-19,19,-19,34,-34,34,-34,26,-26,26,-26,23,-23,23,-23,7,-7,7,-7,33,-33,33,-33,11,-11,11,-11,27,-27,27,-27,22,-22,22,-22,31,-31,31,-31,16,-16,16,-16,34,-34,34,-34,32,-32,32,-32,14,-14,14,-14,8,-8,8,-8,30,-30,30,-30,18,-18,18,-18,35,-35,28,-28,28,-28,21,-21,21,-21,0,0,35,-35,35,-35,1,-1,1,-1,35,-35,35,-35,2,-2,2,-2,33,-33,33,-33,12,-12,12,-12,35,-35,35,-35,3,-3,3,-3,34,-34,34,-34,9,-9,9,-9,35,-35,35,-35,29,-29,29,-29,20,-20,20,-20,4,-4,4,-4,32,-32,32,-32,15,-15,15,-15,35,-35,35,-35,31,-31,31,-31,25,-25,25,-25,17,-17,17,-17,5,-5,5,-5,26,-26,26,-26,24,-24,24,-24,34,-34,34,-34,10,-10,10,-10,33,-33,33,-33,27,-27,27,-27,23,-23,23,-23,13,-13,13,-13,35,-35,35,-35,30,-30,30,-30,19,-19,19,-19,6,-6,6,-6,28,-28,28,-28,22,-22,22,-22,35,-35,35,-35,7,-7,7,-7,34,-34,34,-34,11,-11,11,-11,32,-32,32,-32,16,-16,16,-16,29,-29,29,-29,21,-21,21,-21,33,-33,33,-33,31,-31,31,-31,18,-18,18,-18,14,-14,14,-14,35,-35,35,-35,8,-8,8,-8,36,-36,0,0,36,-36,36,-36,1,-1,1,-1,36,-36,36,-36,34,-34,34,-34,30,-30,30,-30,20,-20,20,-20,12,-12,12,-12,2,-2,2,-2,26,-26,26,-26,25,-25,25,-25,36,-36,36,-36,27,-27,27,-27,24,-24,24,-24,3,-3,3,-3,35,-35,35,-35,9,-9,9,-9,36,-36,36,-36,4,-4,4,-4,32,-32,32,-32,28,-28,28,-28,23,-23,23,-23,17,-17,17,-17,33,-33,33,-33,15,-15,15,-15,36,-36,36,-36,5,-5,5,-5,31,-31,31,-31,19,-19,19,-19,35,-35,35,-35,34,-34,34,-34,29,-29,29,-29,22,-22,22,-22,13,-13,13,-13,10,-10,10,-10,36,-36,36,-36,6,-6,6,-6,30,-30,30,-30,21,-21,21,-21,36,-36,36,-36,33,-33,33,-33,16,-16,16,-16,7,-7,7,-7,35,-35,35,-35,11,-11,11,-11,32,-32,32,-32,18,-18,18,-18,34,-34,34,-34,26,-26,26,-26,14,-14,14,-14,27,-27,27,-27,25,-25,25,-25,36,-36,36,-36,28,-28,28,-28,24,-24,24,-24,8,-8,8,-8,31,-31,31,-31,20,-20,20,-20,37,-37,35,-35,35,-35,12,-12,12,-12,0,0,37,-37,37,-37,29,-29,29,-29,23,-23,23,-23,1,-1,1,-1,37,-37,37,-37,2,-2,2,-2,36,-36,36,-36,9,-9,9,-9,37,-37,37,-37,33,-33,33,-33,17,-17,17,-17,3,-3,3,-3,34,-34,34,-34,15,-15,15,-15,30,-30,30,-30,22,-22,22,-22,37,-37,37,-37,32,-32,32,-32,19,-19,19,-19,4,-4,4,-4,37,-37,37,-37,35,-35,35,-35,13,-13,13,-13,5,-5,5,-5,36,-36,36,-36,10,-10,10,-10,31,-31,31,-31,21,-21,21,-21,37,-37,37,-37,27,-27,27,-27,26,-26,26,-26,6,-6,6,-6,28,-28,28,-28,25,-25,25,-25,34,-34,34,-34,16,-16,16,-16,33,-33,33,-33,18,-18,18,-18,36,-36,36,-36,29,-29,29,-29,24,-24,24,-24,11,-11,11,-11,37,-37,37,-37,7,-7,7,-7,35,-35,35,-35,14,-14,14,-14,32,-32,32,-32,20,-20,20,-20,30,-30,30,-30,23,-23,23,-23,37,-37,37,-37,8,-8,8,-8,36,-36,36,-36,12,-12,12,-12,38,-38,0,0,38,-38,38,-38,34,-34,34,-34,31,-31,31,-31,22,-22,22,-22,17,-17,17,-17,1,-1,1,-1,38,-38,38,-38,2,-2,2,-2,37,-37,37,-37,35,-35,35,-35,33,-33,33,-33,19,-19,19,-19,15,-15,15,-15,9,-9,9,-9,38,-38,38,-38,3,-3,3,-3,27,-27,27,-27,38,-38,38,-38,28,-28,28,-28,26,-26,26,-26,4,-4,4,-4,36,-36,36,-36,32,-32,32,-32,21,-21,21,-21,13,-13,13,-13,29,-29,29,-29,25,-25,25,-25,38,-38,38,-38,37,-37,37,-37,10,-10,10,-10,5,-5,5,-5,30,-30,30,-30,24,-24,24,-24,38,-38,38,-38,34,-34,34,-34,18,-18,18,-18,6,-6,6,-6,35,-35,35,-35,16,-16,16,-16,33,-33,33,-33,20,-20,20,-20,37,-37,37,-37,31,-31,31,-31,23,-23,23,-23,11,-11,11,-11,36,-36,36,-36,14,-14,14,-14,38,-38,38,-38,7,-7,7,-7,38,-38,38,-38,32,-32,32,-32,22,-22,22,-22,8,-8,8,-8,37,-37,37,-37,28,-28,28,-28,27,-27,27,-27,12,-12,12,-12,35,-35,35,-35,17,-17,17,-17,34,-34,34,-34,29,-29,29,-29,26,-26,26,-26,19,-19,19,-19,39,-39,36,-36,36,-36,15,-15,15,-15,0,0,39,-39,39,-39,1,-1,1,-1,39,-39,39,-39,38,-38,38,-38,30,-30,30,-30,25,-25,25,-25,9,-9,9,-9,2,-2,2,-2,39,-39,39,-39,33,-33,33,-33,21,-21,21,-21,3,-3,3,-3,39,-39,39,-39,31,-31,31,-31,24,-24,24,-24,4,-4,4,-4,37,-37,37,-37,13,-13,13,-13,38,-38,38,-38,10,-10,10,-10,39,-39,39,-39,5,-5,5,-5,35,-35,35,-35,18,-18,18,-18,36,-36,36,-36,16,-16,16,-16,32,-32,32,-32,23,-23,23,-23,34,-34,34,-34,20,-20,20,-20,39,-39,39,-39,6,-6,6,-6,38,-38,38,-38,37,-37,37,-37,14,-14,14,-14,11,-11,11,-11,28,-28,28,-28,39,-39,39,-39,29,-29,29,-29,27,-27,27,-27,7,-7,7,-7,33,-33,33,-33,22,-22,22,-22,30,-30,30,-30,26,-26,26,-26,39,-39,39,-39,36,-36,36,-36,17,-17,17,-17,8,-8,8,-8,35,-35,35,-35,31,-31,31,-31,25,-25,25,-25,19,-19,19,-19,38,-38,38,-38,12,-12,12,-12,37,-37,37,-37,15,-15,15,-15,34,-34,34,-34,21,-21,21,-21,40,-40,32,-32,32,-32,24,-24,24,-24,0,0,40,-40,40,-40,1,-1,1,-1,39,-39,39,-39,9,-9,9,-9,40,-40,40,-40,2,-2,2,-2,40,-40,40,-40,3,-3,3,-3,38,-38,38,-38,13,-13,13,-13,40,-40,40,-40,4,-4,4,-4,33,-33,33,-33,23,-23,23,-23,36,-36,36,-36,18,-18,18,-18,39,-39,39,-39,10,-10,10,-10,40,-40,40,-40,37,-37,37,-37,35,-35,35,-35,29,-29,29,-29,28,-28,28,-28,20,-20,20,-20,16,-16,16,-16,5,-5,5,-5,30,-30,30,-30,27,-27,27,-27,40,-40,40,-40,6,-6,6,-6,31,-31,31,-31,26,-26,26,-26,38,-38,38,-38,34,-34,34,-34,22,-22,22,-22,14,-14,14,-14,39,-39,39,-39,11,-11,11,-11,40,-40,40,-40,32,-32,32,-32,25,-25,25,-25,7,-7,7,-7,36,-36,36,-36,19,-19,19,-19,37,-37,37,-37,17,-17,17,-17,40,-40,40,-40,8,-8,8,-8,39,-39,39,-39,33,-33,33,-33,24,-24,24,-24,12,-12,12,-12,35,-35,35,-35,21,-21,21,-21,38,-38,38,-38,15,-15,15,-15,41,-41,40,-40,40,-40,9,-9,9,-9,0,0,41,-41,41,-41,29,-29,29,-29,1,-1,1,-1,30,-30,30,-30,28,-28,28,-28,41,-41,41,-41,34,-34,34,-34,23,-23,23,-23,2,-2,2,-2,41,-41,41,-41,39,-39,39,-39,31,-31,31,-31,27,-27,27,-27,13,-13,13,-13,3,-3,3,-3,37,-37,37,-37,18,-18,18,-18,36,-36,36,-36,20,-20,20,-20,41,-41,41,-41,4,-4,4,-4,40,-40,40,-40,38,-38,38,-38,32,-32,32,-32,26,-26,26,-26,16,-16,16,-16,10,-10,10,-10,41,-41,41,-41,5,-5,5,-5,35,-35,35,-35,22,-22,22,-22,33,-33,33,-33,25,-25,25,-25,41,-41,41,-41,39,-39,39,-39,14,-14,14,-14,6,-6,6,-6,40,-40,40,-40,11,-11,11,-11,41,-41,41,-41,37,-37,37,-37,19,-19,19,-19,7,-7,7,-7,34,-34,34,-34,24,-24,24,-24,38,-38,38,-38,17,-17,17,-17,36,-36,36,-36,21,-21,21,-21,30,-30,30,-30,29,-29,29,-29,40,-40,40,-40,12,-12,12,-12,41,-41,41,-41,31,-31,31,-31,28,-28,28,-28,8,-8,8,-8,39,-39,39,-39,15,-15,15,-15,32,-32,32,-32,27,-27,27,-27,35,-35,35,-35,23,-23,23,-23,41,-41,41,-41,9,-9,9,-9,42,-42,0,0,42,-42,42,-42,33,-33,33,-33,26,-26,26,-26,1,-1,1,-1,42,-42,42,-42,38,-38,38,-38,18,-18,18,-18,2,-2,2,-2,40,-40,40,-40,37,-37,37,-37,20,-20,20,-20,13,-13,13,-13,42,-42,42,-42,3,-3,3,-3,39,-39,39,-39,16,-16,16,-16,42,-42,42,-42,36,-36,36,-36,22,-22,22,-22,4,-4,4,-4,41,-41,41,-41,34,-34,34,-34,25,-25,25,-25,10,-10,10,-10,42,-42,42,-42,5,-5,5,-5,40,-40,40,-40,14,-14,14,-14,42,-42,42,-42,30,-30,30,-30,6,-6,6,-6,35,-35,35,-35,24,-24,24,-24,41,-41,41,-41,31,-31,31,-31,29,-29,29,-29,11,-11,11,-11,38,-38,38,-38,19,-19,19,-19,32,-32,32,-32,28,-28,28,-28,39,-39,39,-39,37,-37,37,-37,21,-21,21,-21,17,-17,17,-17,42,-42,42,-42,7,-7,7,-7,33,-33,33,-33,27,-27,27,-27,41,-41,41,-41,40,-40,40,-40,36,-36,36,-36,23,-23,23,-23,15,-15,15,-15,12,-12,12,-12,42,-42,42,-42,8,-8,8,-8,34,-34,34,-34,26,-26,26,-26,38,-38,38,-38,20,-20,20,-20,42,-42,42,-42,39,-39,39,-39,18,-18,18,-18,9,-9,9,-9,43,-43,0,0,43,-43,43,-43,41,-41,41,-41,35,-35,35,-35,25,-25,25,-25,13,-13,13,-13,1,-1,1,-1,43,-43,43,-43,37,-37,37,-37,22,-22,22,-22,2,-2,2,-2,40,-40,40,-40,16,-16,16,-16,43,-43,43,-43,3,-3,3,-3,31,-31,31,-31,30,-30,30,-30,42,-42,42,-42,10,-10,10,-10,43,-43,43,-43,32,-32,32,-32,29,-29,29,-29,4,-4,4,-4,36,-36,36,-36,24,-24,24,-24,33,-33,33,-33,28,-28,28,-28,43,-43,43,-43,5,-5,5,-5,41,-41,41,-41,14,-14,14,-14,39,-39,39,-39,19,-19,19,-19,43,-43,43,-43,42,-42,42,-42,38,-38,38,-38,34,-34,34,-34,27,-27,27,-27,21,-21,21,-21,11,-11,11,-11,6,-6,6,-6,40,-40,40,-40,17,-17,17,-17,43,-43,43,-43,37,-37,37,-37,23,-23,23,-23,7,-7,7,-7,35,-35,35,-35,26,-26,26,-26,41,-41,41,-41,15,-15,15,-15,42,-42,42,-42,12,-12,12,-12,43,-43,43,-43,8,-8,8,-8,39,-39,39,-39,36,-36,36,-36,25,-25,25,-25,20,-20,20,-20,31,-31,31,-31,40,-40,40,-40,32,-32,32,-32,30,-30,30,-30,18,-18,18,-18,38,-38,38,-38,22,-22,22,-22,43,-43,43,-43,33,-33,33,-33,29,-29,29,-29,9,-9,9,-9,42,-42,42,-42,13,-13,13,-13,44,-44,0,0,44,-44,44,-44,41,-41,41,-41,16,-16,16,-16,1,-1,1,-1,44,-44,44,-44,34,-34,34,-34,28,-28,28,-28,2,-2,2,-2,44,-44,44,-44,37,-37,37,-37,24,-24,24,-24,3,-3,3,-3,43,-43,43,-43,10,-10,10,-10,44,-44,44,-44,4,-4,4,-4,35,-35,35,-35,27,-27,27,-27,42,-42,42,-42,14,-14,14,-14,44,-44,44,-44,40,-40,40,-40,19,-19,19,-19,5,-5,5,-5,39,-39,39,-39,21,-21,21,-21,43,-43,43,-43,41,-41,41,-41,17,-17,17,-17,11,-11,11,-11,44,-44,44,-44,36,-36,36,-36,26,-26,26,-26,6,-6,6,-6,38,-38,38,-38,23,-23,23,-23,44,-44,44,-44,32,-32,32,-32,31,-31,31,-31,7,-7,7,-7,42,-42,42,-42,33,-33,33,-33,30,-30,30,-30,15,-15,15,-15,43,-43,43,-43,12,-12,12,-12,37,-37,37,-37,25,-25,25,-25,34,-34,34,-34,29,-29,29,-29,44,-44,44,-44,40,-40,40,-40,20,-20,20,-20,8,-8,8,-8,41,-41,41,-41,39,-39,39,-39,22,-22,22,-22,18,-18,18,-18,35,-35,35,-35,28,-28,28,-28,44,-44,44,-44,9,-9,9,-9,43,-43,43,-43,13,-13,13,-13,42,-42,42,-42,38,-38,38,-38,24,-24,24,-24,16,-16,16,-16,45,-45,36,-36,36,-36,27,-27,27,-27,0,0,45,-45,45,-45,1,-1,1,-1,45,-45,45,-45,2,-2,2,-2,45,-45,45,-45,3,-3,3,-3,44,-44,44,-44,10,-10,10,-10,45,-45,45,-45,40,-40,40,-40,21,-21,21,-21,4,-4,4,-4,41,-41,41,-41,19,-19,19,-19,43,-43,43,-43,37,-37,37,-37,26,-26,26,-26,14,-14,14,-14,32,-32,32,-32,45,-45,45,-45,39,-39,39,-39,33,-33,33,-33,31,-31,31,-31,23,-23,23,-23,5,-5,5,-5,42,-42,42,-42,17,-17,17,-17,34,-34,34,-34,30,-30,30,-30,44,-44,44,-44,11,-11,11,-11,45,-45,45,-45,6,-6,6,-6,35,-35,35,-35,29,-29,29,-29,38,-38,38,-38,25,-25,25,-25,45,-45,45,-45,43,-43,43,-43,15,-15,15,-15,7,-7,7,-7,44,-44,44,-44,36,-36,36,-36,28,-28,28,-28,12,-12,12,-12,41,-41,41,-41,20,-20,20,-20,40,-40,40,-40,22,-22,22,-22,42,-42,42,-42,18,-18,18,-18,45,-45,45,-45,8,-8,8,-8,39,-39,39,-39,24,-24,24,-24,37,-37,37,-37,27,-27,27,-27,44,-44,44,-44,43,-43,43,-43,16,-16,16,-16,13,-13,13,-13,45,-45,45,-45,9,-9,9,-9,33,-33,33,-33,32,-32,32,-32,46,-46,0,0,46,-46,46,-46,34,-34,34,-34,31,-31,31,-31,1,-1,1,-1,46,-46,46,-46,38,-38,38,-38,26,-26,26,-26,2,-2,2,-2,41,-41,41,-41,21,-21,21,-21,46,-46,46,-46,45,-45,45,-45,42,-42,42,-42,35,-35,35,-35,30,-30,30,-30,19,-19,19,-19,10,-10,10,-10,3,-3,3,-3,40,-40,40,-40,23,-23,23,-23,46,-46,46,-46,44,-44,44,-44,14,-14,14,-14,4,-4,4,-4,36,-36,36,-36,29,-29,29,-29,43,-43,43,-43,17,-17,17,-17,46,-46,46,-46,5,-5,5,-5,45,-45,45,-45,39,-39,39,-39,25,-25,25,-25,11,-11,11,-11,46,-46,46,-46,6,-6,6,-6,37,-37,37,-37,28,-28,28,-28,44,-44,44,-44,15,-15,15,-15,42,-42,42,-42,20,-20,20,-20,46,-46,46,-46,41,-41,41,-41,22,-22,22,-22,7,-7,7,-7,45,-45,45,-45,12,-12,12,-12,43,-43,43,-43,38,-38,38,-38,27,-27,27,-27,18,-18,18,-18,40,-40,40,-40,24,-24,24,-24,33,-33,33,-33,46,-46,46,-46,34,-34,34,-34,32,-32,32,-32,8,-8,8,-8,35,-35,35,-35,31,-31,31,-31,44,-44,44,-44,16,-16,16,-16,45,-45,45,-45,13,-13,13,-13,36,-36,36,-36,30,-30,30,-30,46,-46,46,-46,39,-39,39,-39,26,-26,26,-26,9,-9,9,-9,42,-42,42,-42,21,-21,21,-21,47,-47,0,0,47,-47,47,-47,43,-43,43,-43,41,-41,41,-41,37,-37,37,-37,29,-29,29,-29,23,-23,23,-23,19,-19,19,-19,1,-1,1,-1,47,-47,47,-47,2,-2,2,-2,46,-46,46,-46,10,-10,10,-10,47,-47,47,-47,3,-3,3,-3,45,-45,45,-45,14,-14,14,-14,47,-47,47,-47,44,-44,44,-44,40,-40,40,-40,25,-25,25,-25,17,-17,17,-17,4,-4,4,-4,38,-38,38,-38,28,-28,28,-28,47,-47,47,-47,5,-5,5,-5,46,-46,46,-46,11,-11,11,-11,47,-47,47,-47,34,-34,34,-34,33,-33,33,-33,6,-6,6,-6,42,-42,42,-42,22,-22,22,-22,43,-43,43,-43,35,-35,35,-35,32,-32,32,-32,20,-20,20,-20,45,-45,45,-45,39,-39,39,-39,27,-27,27,-27,15,-15,15,-15,41,-41,41,-41,36,-36,36,-36,31,-31,31,-31,24,-24,24,-24,47,-47,47,-47,7,-7,7,-7,46,-46,46,-46,44,-44,44,-44,18,-18,18,-18,12,-12,12,-12,37,-37,37,-37,30,-30,30,-30,47,-47,47,-47,8,-8,8,-8,40,-40,40,-40,26,-26,26,-26,45,-45,45,-45,16,-16,16,-16,46,-46,46,-46,38,-38,38,-38,29,-29,29,-29,13,-13,13,-13,47,-47,47,-47,43,-43,43,-43,21,-21,21,-21,9,-9,9,-9,42,-42,42,-42,23,-23,23,-23,44,-44,44,-44,19,-19,19,-19,48,-48,0,0,48,-48,48,-48,39,-39,39,-39,28,-28,28,-28,1,-1,1,-1,41,-41,41,-41,25,-25,25,-25,48,-48,48,-48,2,-2,2,-2,47,-47,47,-47,10,-10,10,-10,46,-46,46,-46,34,-34,34,-34,14,-14,14,-14,48,-48,48,-48,3,-3,3,-3,45,-45,45,-45,35,-35,35,-35,33,-33,33,-33,17,-17,17,-17,48,-48,48,-48,36,-36,36,-36,32,-32,32,-32,4,-4,4,-4,48,-48,48,-48,40,-40,40,-40,27,-27,27,-27,5,-5,5,-5,47,-47,47,-47,37,-37,37,-37,31,-31,31,-31,11,-11,11,-11,43,-43,43,-43,22,-22,22,-22,44,-44,44,-44,20,-20,20,-20,48,-48,48,-48,42,-42,42,-42,24,-24,24,-24,6,-6,6,-6,46,-46,46,-46,15,-15,15,-15,38,-38,38,-38,30,-30,30,-30,45,-45,45,-45,18,-18,18,-18,48,-48,48,-48,47,-47,47,-47,12,-12,12,-12,7,-7,7,-7,41,-41,41,-41,26,-26,26,-26,39,-39,39,-39,29,-29,29,-29,48,-48,48,-48,8,-8,8,-8,46,-46,46,-46,16,-16,16,-16,44,-44,44,-44,21,-21,21,-21,47,-47,47,-47,43,-43,43,-43,23,-23,23,-23,13,-13,13,-13,35,-35,35,-35,34,-34,34,-34,40,-40,40,-40,28,-28,28,-28,48,-48,48,-48,36,-36,36,-36,33,-33,33,-33,9,-9,9,-9,45,-45,45,-45,19,-19,19,-19,42,-42,42,-42,25,-25,25,-25,37,-37,37,-37,32,-32,32,-32,49,-49,0,0,49,-49,49,-49,1,-1,1,-1,48,-48,48,-48,10,-10,10,-10,49,-49,49,-49,47,-47,47,-47,46,-46,46,-46,38,-38,38,-38,31,-31,31,-31,17,-17,17,-17,14,-14,14,-14,2,-2,2,-2,49,-49,49,-49,41,-41,41,-41,27,-27,27,-27,3,-3,3,-3,49,-49,49,-49,4,-4,4,-4,44,-44,44,-44,22,-22,22,-22,39,-39,39,-39,30,-30,30,-30,48,-48,48,-48,45,-45,45,-45,43,-43,43,-43,24,-24,24,-24,20,-20,20,-20,11,-11,11,-11,49,-49,49,-49,5,-5,5,-5,47,-47,47,-47,15,-15,15,-15,49,-49,49,-49,6,-6,6,-6,46,-46,46,-46,42,-42,42,-42,26,-26,26,-26,18,-18,18,-18,40,-40,40,-40,29,-29,29,-29,48,-48,48,-48,12,-12,12,-12,49,-49,49,-49,35,-35,35,-35,7,-7,7,-7,36,-36,36,-36,34,-34,34,-34,37,-37,37,-37,33,-33,33,-33,49,-49,49,-49,47,-47,47,-47,44,-44,44,-44,41,-41,41,-41,28,-28,28,-28,23,-23,23,-23,16,-16,16,-16,8,-8,8,-8,45,-45,45,-45,21,-21,21,-21,38,-38,38,-38,32,-32,32,-32,48,-48,48,-48,13,-13,13,-13,43,-43,43,-43,25,-25,25,-25,46,-46,46,-46,19,-19,19,-19,49,-49,49,-49,39,-39,39,-39,31,-31,31,-31,9,-9,9,-9,42,-42,42,-42,27,-27,27,-27,47,-47,47,-47,17,-17,17,-17,50,-50,48,-48,48,-48,40,-40,40,-40,30,-30,30,-30,14,-14,14,-14,0,0}; diff --git a/cpp/a_star/expansion_groups.py b/cpp/a_star/expansion_groups.py new file mode 100644 index 0000000..e2a2490 --- /dev/null +++ b/cpp/a_star/expansion_groups.py @@ -0,0 +1,60 @@ +from os import getcwd +from os.path import join, dirname +from math import sqrt + +MAX_RADIUS = 5 +LINES = 321 +COLS = 221 + +expansion_groups = dict() +CWD = join(getcwd(), dirname(__file__)) + +for l in range(MAX_RADIUS*10+1): + for c in range(MAX_RADIUS*10+1): + dist = sqrt(l*l+c*c)*0.1 + if dist <= MAX_RADIUS: + if not dist in expansion_groups: + expansion_groups[dist] = [] + expansion_groups[dist].append((l,c)) + + if c>0: expansion_groups[dist].append((l,-c)) + if l>0: expansion_groups[dist].append((-l,c)) + if c>0 and l>0: expansion_groups[dist].append((-l,-c)) + +ascending_dist = sorted(expansion_groups) +groups_no = len(expansion_groups) + +#============================================= prepare text to file + +no_of_pos = 0 +for g in expansion_groups.values(): + no_of_pos += len(g) + +file = [] +file.append(f"const int expansion_positions_no = {no_of_pos};\n") +file.append(f"const float expansion_pos_dist[{no_of_pos}] = {{") + +for dist in ascending_dist: + for p in expansion_groups[dist]: + file.extend([f"{dist}",","]) +file.pop() + +file.append(f"}};\n\nconst int expansion_pos_l[{no_of_pos}] = {{") + +for dist in ascending_dist: + for p in expansion_groups[dist]: + file.extend([f"{p[0]}",","]) +file.pop() + +file.append(f"}};\n\nconst int expansion_pos_c[{no_of_pos}] = {{") + +for dist in ascending_dist: + for p in expansion_groups[dist]: + file.extend([f"{p[1]}",","]) +file.pop() +file.append("};\n") + +#============================================= write to file + +with open(join(CWD, "expansion_groups.h"), 'w') as f: + f.write(''.join(file)) diff --git a/cpp/a_star/lib_main.cpp b/cpp/a_star/lib_main.cpp new file mode 100644 index 0000000..088c0ae --- /dev/null +++ b/cpp/a_star/lib_main.cpp @@ -0,0 +1,43 @@ +#include "a_star.h" +#include +#include + +namespace py = pybind11; +using namespace std; + + +py::array_t compute( py::array_t parameters ){ + + // ================================================= 1. Parse data + + py::buffer_info parameters_buf = parameters.request(); + int params_len = parameters_buf.shape[0]; + + // ================================================= 2. Compute path + + astar( (float*)parameters_buf.ptr, params_len ); + + // ================================================= 3. Prepare data to return + + py::array_t retval = py::array_t(final_path_size); //allocate + py::buffer_info buff = retval.request(); + float *ptr = (float *) buff.ptr; + + for(int i=0; i "argname"_a + +PYBIND11_MODULE(a_star, m) { // the python module name, m is the interface to create bindings + m.doc() = "Custom A-star implementation"; // optional module docstring + + // optional arguments names + m.def("compute", &compute, "Compute the best path", "parameters"_a); +} \ No newline at end of file diff --git a/cpp/ball_predictor/Makefile b/cpp/ball_predictor/Makefile new file mode 100644 index 0000000..c60f708 --- /dev/null +++ b/cpp/ball_predictor/Makefile @@ -0,0 +1,14 @@ +src = $(wildcard *.cpp) +obj = $(src:.c=.o) + +CFLAGS = -O3 -shared -std=c++11 -fPIC -Wall $(PYBIND_INCLUDES) + +all: $(obj) + g++ $(CFLAGS) -o ball_predictor.so $^ + +debug: $(filter-out lib_main.cpp,$(obj)) + g++ -O0 -std=c++14 -Wall -g -o debug.bin debug_main.cc $^ + +.PHONY: clean +clean: + rm -f $(obj) all diff --git a/cpp/ball_predictor/ball_predictor.c_info b/cpp/ball_predictor/ball_predictor.c_info new file mode 100644 index 0000000000000000000000000000000000000000..026800455120ec5cce154339c9337b75c4310455 GIT binary patch literal 25 bcmZo*naali0X +#include "ball_predictor.h" + + +float ball_pos_pred[600]; // ball position (x,y) prediction for 300*0.02s = 6s +float ball_vel_pred[600]; // ball velocity (x,y) prediction for 300*0.02s = 6s +float ball_spd_pred[300]; // ball linear speed (s) prediction for 300*0.02s = 6s +int pos_pred_len=0; + +/** + * @brief Get intersection with moving ball (intersection point and distance) + * @param x robot position (x) + * @param y robot position (y) + * @param max_robot_sp_per_step maximum speed per step + * @param ball_pos imported ball positions (possibly modified version of ball_pos_pred) + * @param ball_pos_len length of ball_pos + * @param ret_x returned position (x) of intersection point + * @param ret_y returned position (y) of intersection point + * @param ret_d returned distance between robot and intersection point + */ +void get_intersection_with_ball(float x, float y, float max_robot_sp_per_step, float ball_pos[], float ball_pos_len, + float &ret_x, float &ret_y, float &ret_d){ + + float robot_max_displacement = 0.2; // robot has an immediate reach radius of 0.2m + int j=0; + + while(1){ + float vec_x = ball_pos[j++] - x; + float vec_y = ball_pos[j++] - y; + float b_dist_sq = vec_x*vec_x + vec_y*vec_y; // squared ball distance + + // If robot has reached the ball, or the ball has stopped but the robot is still not there + if (b_dist_sq <= robot_max_displacement*robot_max_displacement or j>=ball_pos_len){ + float d = sqrtf(b_dist_sq); + ret_d = d; + ret_x = ball_pos[j-2]; + ret_y = ball_pos[j-1]; + break; + } + robot_max_displacement += max_robot_sp_per_step; + } +} + + +/** + * @brief Predict ball position/velocity until the ball stops or gets out of bounds (up to 6s) + * Adequate when the ball is rolling on the ground + * @param bx ball position (x) + * @param by ball position (y) + * @param vx ball velocity (x) + * @param vy ball velocity (y) + */ +void predict_rolling_ball_pos_vel_spd(double bx, double by, double vx, double vy){ + + // acceleration = Rolling Drag Force * mass (constant = 0.026 kg) + // acceleration = k1 * velocity^2 + k2 * velocity + const double k1 = -0.01; + const double k2 = -1; + + const double k1_x = (vx < 0) ? -k1 : k1; // invert k1 if vx is negative, because vx^2 absorbs the sign + const double k1_y = (vy < 0) ? -k1 : k1; // invert k1 if vy is negative, because vy^2 absorbs the sign + + ball_pos_pred[0] = bx; // current ball position + ball_pos_pred[1] = by; + ball_vel_pred[0] = vx; // current ball velocity + ball_vel_pred[1] = vy; + ball_spd_pred[0] = sqrt(vx*vx+vy*vy); + + int counter = 2; + + while(counter < 600){ + + // acceleration + double acc_x = vx*vx*k1_x + vx*k2; + double acc_y = vy*vy*k1_y + vy*k2; + + // second equation of motion: displacement = v0*t + 0.5*a*t^2 + double dx = vx*0.02 + acc_x*0.0002; // 0.5*0.02^2 = 0.0002 + double dy = vy*0.02 + acc_y*0.0002; // 0.5*0.02^2 = 0.0002 + + // position + bx += dx; + by += dy; + + // abort when displacement is low or ball is out of bounds + if ((fabs(dx) < 0.0005 and fabs(dy) < 0.0005) or fabs(bx) > 15 or fabs(by) > 10){ + break; + } + + // velocity + vx += acc_x*0.02; + vy += acc_y*0.02; + + // store as 32b + ball_spd_pred[counter/2] = sqrt(vx*vx+vy*vy); + ball_vel_pred[counter] = vx; + ball_pos_pred[counter++] = bx; + ball_vel_pred[counter] = vy; + ball_pos_pred[counter++] = by; + + } + + pos_pred_len = counter; +} \ No newline at end of file diff --git a/cpp/ball_predictor/ball_predictor.h b/cpp/ball_predictor/ball_predictor.h new file mode 100644 index 0000000..22018b4 --- /dev/null +++ b/cpp/ball_predictor/ball_predictor.h @@ -0,0 +1,10 @@ +#pragma once + +extern float ball_pos_pred[600]; // ball position (x,y) prediction for 300*0.02s = 6s +extern float ball_vel_pred[600]; // ball velocoty (x,y) prediction for 300*0.02s = 6s +extern float ball_spd_pred[300]; // ball linear speed (s) prediction for 300*0.02s = 6s +extern int pos_pred_len; + +extern void get_intersection_with_ball(float x, float y, float max_robot_sp_per_step, float ball_pos[], float ball_pos_len, + float &ret_x, float &ret_y, float &ret_d); +extern void predict_rolling_ball_pos_vel_spd(double bx, double by, double vx, double vy); diff --git a/cpp/ball_predictor/ball_predictor.so b/cpp/ball_predictor/ball_predictor.so new file mode 100755 index 0000000000000000000000000000000000000000..4602611fee61d33a1bf6e9e1496de848b5cfa493 GIT binary patch literal 222832 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 RtkQowS7Y;25~Mte{||~^vf}^% literal 0 HcmV?d00001 diff --git a/cpp/ball_predictor/debug_main.cc b/cpp/ball_predictor/debug_main.cc new file mode 100644 index 0000000..469c4f3 --- /dev/null +++ b/cpp/ball_predictor/debug_main.cc @@ -0,0 +1,54 @@ +#include "ball_predictor.h" +#include +#include +#include + +using std::cout; +using std::chrono::high_resolution_clock; +using std::chrono::duration_cast; +using std::chrono::microseconds; + +std::chrono::_V2::system_clock::time_point t1,t2; + +int main(){ + + // ================================================= 1. Generate data + + float px = 3; + float py = 4; + float vx = -5; + float vy = -1; + + // ================================================= 2. Compute prediction + + t1 = high_resolution_clock::now(); + predict_rolling_ball_pos_vel_spd(px, py, vx, vy); + t2 = high_resolution_clock::now(); + + cout << std::fixed << std::setprecision(8); + + for(int i=0; i(t2 - t1).count() << "us for prediction\n"; + + // ================================================= 3. Generate data + + float robot_x = -1; + float robot_y = 1; + float max_speed_per_step = 0.7*0.02; + float ret_x, ret_y, ret_d; + + // ================================================= 4. Compute intersection + + t1 = high_resolution_clock::now(); + get_intersection_with_ball(robot_x, robot_y, max_speed_per_step, ball_pos_pred, pos_pred_len, ret_x, ret_y, ret_d); + t2 = high_resolution_clock::now(); + + cout << duration_cast(t2 - t1).count() << "us for intersection\n\n"; + cout << "Intersection: " << ret_x << "," << ret_y << " dist: " << ret_d << "\n\n"; + +} diff --git a/cpp/ball_predictor/lib_main.cpp b/cpp/ball_predictor/lib_main.cpp new file mode 100644 index 0000000..9d6be32 --- /dev/null +++ b/cpp/ball_predictor/lib_main.cpp @@ -0,0 +1,100 @@ +#include "ball_predictor.h" +#include +#include + +namespace py = pybind11; +using namespace std; + + +/** + * @brief Predict rolling ball position, velocity, linear speed + * + * @param parameters + * ball_x, ball_y, ball_vel_x, ball_vel_y + * @return ball_pos_pred, ball_vel_pred, ball_spd_pred + */ +py::array_t predict_rolling_ball( py::array_t parameters ){ + + // ================================================= 1. Parse data + + py::buffer_info parameters_buf = parameters.request(); + float* parameters_ptr = (float*)parameters_buf.ptr; + + float px = parameters_ptr[0]; + float py = parameters_ptr[1]; + float vx = parameters_ptr[2]; + float vy = parameters_ptr[3]; + + // ================================================= 2. Compute path + + predict_rolling_ball_pos_vel_spd(px, py, vx, vy); + + // ================================================= 3. Prepare data to return + + py::array_t retval = py::array_t(pos_pred_len+pos_pred_len+pos_pred_len/2); //allocate + py::buffer_info buff = retval.request(); + float *ptr = (float *) buff.ptr; + + for(int i=0; i get_intersection( py::array_t parameters ){ + + // ================================================= 1. Parse data + + py::buffer_info parameters_buf = parameters.request(); + float* parameters_ptr = (float*)parameters_buf.ptr; + int params_len = parameters_buf.shape[0]; + + float x = parameters_ptr[0]; + float y = parameters_ptr[1]; + float max_sp = parameters_ptr[2]; + float* ball_pos = parameters_ptr + 3; + float ret_x, ret_y, ret_d; + + // ================================================= 2. Compute path + + get_intersection_with_ball(x, y, max_sp, ball_pos, params_len-3, ret_x, ret_y, ret_d); + + // ================================================= 3. Prepare data to return + + py::array_t retval = py::array_t(3); //allocate + py::buffer_info buff = retval.request(); + float *ptr = (float *) buff.ptr; + + ptr[0] = ret_x; + ptr[1] = ret_y; + ptr[2] = ret_d; + return retval; +} + + +using namespace pybind11::literals; // to add informative argument names as -> "argname"_a + +PYBIND11_MODULE(ball_predictor, m) { // the python module name, m is the interface to create bindings + m.doc() = "Ball predictor"; // optional module docstring + + // optional arguments names + m.def("predict_rolling_ball", &predict_rolling_ball, "Predict rolling ball", "parameters"_a); + m.def("get_intersection", &get_intersection, "Get point of intersection with moving ball", "parameters"_a); +} + diff --git a/cpp/localization/Field.cpp b/cpp/localization/Field.cpp new file mode 100644 index 0000000..f158d6b --- /dev/null +++ b/cpp/localization/Field.cpp @@ -0,0 +1,532 @@ +#include "Field.h" +#include "RobovizLogger.h" +#include "World.h" + + +static World& world = SWorld::getInstance(); + +//================================================================================================= +//=========================================================================== constexpr definitions +//================================================================================================= + +decltype(Field::cRingLineLength) constexpr Field::cRingLineLength; +decltype(Field::cPenaltyBoxDistX) constexpr Field::cPenaltyBoxDistX; +decltype(Field::cHalfPenaltyWidth) constexpr Field::cHalfPenaltyWidth; +decltype(Field::cHalfGoalWidth) constexpr Field::cHalfGoalWidth; +decltype(Field::cHalfFielfLength) constexpr Field::cHalfFielfLength; +decltype(Field::cGoalWidth) constexpr Field::cGoalWidth; +decltype(Field::cGoalDepth) constexpr Field::cGoalDepth; +decltype(Field::cGoalHeight) constexpr Field::cGoalHeight; +decltype(Field::cFieldLength) constexpr Field::cFieldLength; +decltype(Field::cFieldWidth) constexpr Field::cFieldWidth; +decltype(Field::cPenaltyLength) constexpr Field::cPenaltyLength; +decltype(Field::cPenaltyWidth) constexpr Field::cPenaltyWidth; +decltype(Field::cFieldLineSegments::list) constexpr Field::cFieldLineSegments::list; +decltype(Field::cFieldPoints::list) constexpr Field::cFieldPoints::list; + +//non-constexpr definitions +decltype(Field::list_8_landmarks::list) Field::list_8_landmarks::list; + +//================================================================================================= +//=============================================================================== Drawing utilities +//================================================================================================= + + +/** + * Draw estimates of all visible lines, markers, self position and ball + * */ + +void Field::draw_visible(const Matrix4D& headToFieldT, bool is_right_side) const{ + + if(is_right_side){ + return draw_visible_switch(headToFieldT); + } + + string draw_name = "localization"; + + RobovizLogger* roboviz = RobovizLogger::Instance(); + roboviz->init(); // only initialized when draw_visible is called (only happens once) + + //--------------------------------- Print all lines, whether they were identified or not + for(const Line6f& l : list_segments) { + + Vector3f s = headToFieldT * l.startc; + Vector3f e = headToFieldT * l.endc; + + roboviz->drawLine(s.x, s.y, s.z, e.x, e.y, e.z, 1, 0.8,0,0, &draw_name); + } + + //--------------------------------- Print identified line segments, with their fixed abs coordinates + + for(const auto& s : list_known_segments){ + + Vector3f mid = Vector3f::determineMidpoint(s.point[0].absPos.get_vector(), s.point[1].absPos.get_vector()); + + string line_name(s.fieldSegment->name); + roboviz->drawAnnotation(&line_name,mid.x,mid.y,mid.z, 0,1,0,&draw_name); + roboviz->drawLine(s.point[0].absPos.x, s.point[0].absPos.y, s.point[0].absPos.z, + s.point[1].absPos.x, s.point[1].absPos.y, s.point[1].absPos.z, 3, 0,0.8,0, &draw_name); + } + + for(const auto& m : list_known_markers){ + string line_name(m.fieldPt->name); + roboviz->drawAnnotation(&line_name,m.absPos.x, m.absPos.y, m.absPos.z+1, 1,0,0,&draw_name); + roboviz->drawLine(m.absPos.x, m.absPos.y, m.absPos.z, + m.absPos.x, m.absPos.y, m.absPos.z+0.5, 1, 0.8,0.8,0.8, &draw_name); + } + for(const auto& m : list_unknown_markers){ + string line_name = "!"; + roboviz->drawAnnotation(&line_name,m.absPos.x, m.absPos.y, m.absPos.z+1, 1,0,0,&draw_name); + roboviz->drawLine(m.absPos.x, m.absPos.y, m.absPos.z, + m.absPos.x, m.absPos.y, m.absPos.z+0.5, 1, 0.8,0.8,0.8, &draw_name); + } + + //--------------------------------- Draw player and ball arrows + + Vector3f me = headToFieldT.toVector3f(); + + roboviz->drawLine(me.x, me.y, me.z, me.x, me.y, me.z+0.5, 2,1,0,0,&draw_name); + roboviz->drawLine(me.x, me.y, me.z, me.x-0.2, me.y, me.z+0.2, 2,1,0,0,&draw_name); + roboviz->drawLine(me.x, me.y, me.z, me.x+0.2, me.y, me.z+0.2, 2,1,0,0,&draw_name); + + //There is no need to draw the ball position here (but it works well) + + /*static Vector3f last_known_ball_pos = Vector3f(); + if(world.ball_seen){ + last_known_ball_pos = headToFieldT * world.ball_rel_pos_cart; + } + + Vector3f &b = last_known_ball_pos; + + roboviz->drawLine(b.x, b.y, b.z, b.x, b.y, b.z+0.5, 2,1,1,0,&draw_name); + roboviz->drawLine(b.x, b.y, b.z, b.x-0.2, b.y, b.z+0.2, 2,1,1,0,&draw_name); + roboviz->drawLine(b.x, b.y, b.z, b.x+0.2, b.y, b.z+0.2, 2,1,1,0,&draw_name);*/ + + roboviz->swapBuffers(&draw_name); + + +} + +/** + * Draw estimates of all visible lines, markers, self position and ball, but switch field sides + * */ + +void Field::draw_visible_switch(const Matrix4D& headToFieldT) const{ + + string draw_name = "localization"; + + RobovizLogger* roboviz = RobovizLogger::Instance(); + roboviz->init(); // only initialized when draw_visible is called (only happens once) + + //--------------------------------- Print all lines, whether they were identified or not + for(const Line6f& l : list_segments) { + + Vector3f s = headToFieldT * l.startc; + Vector3f e = headToFieldT * l.endc; + + roboviz->drawLine(-s.x, -s.y, s.z, -e.x, -e.y, e.z, 1, 0.8,0,0, &draw_name); + } + + //--------------------------------- Print identified line segments, with their fixed abs coordinates + + for(const auto& s : list_known_segments){ + + Vector3f mid = Vector3f::determineMidpoint(s.point[0].absPos.get_vector(), s.point[1].absPos.get_vector()); + + string line_name(s.fieldSegment->name); + roboviz->drawAnnotation(&line_name,-mid.x,-mid.y,mid.z, 0,1,0,&draw_name); + roboviz->drawLine(-s.point[0].absPos.x, -s.point[0].absPos.y, s.point[0].absPos.z, + -s.point[1].absPos.x, -s.point[1].absPos.y, s.point[1].absPos.z, 3, 0,0.8,0, &draw_name); + } + + for(const auto& m : list_known_markers){ + string line_name(m.fieldPt->name); + roboviz->drawAnnotation(&line_name,-m.absPos.x, -m.absPos.y, m.absPos.z+1, 1,0,0,&draw_name); + roboviz->drawLine(-m.absPos.x, -m.absPos.y, m.absPos.z, + -m.absPos.x, -m.absPos.y, m.absPos.z+0.5, 1, 0.8,0.8,0.8, &draw_name); + } + for(const auto& m : list_unknown_markers){ + string line_name = "!"; + roboviz->drawAnnotation(&line_name,-m.absPos.x, -m.absPos.y, m.absPos.z+1, 1,0,0,&draw_name); + roboviz->drawLine(-m.absPos.x, -m.absPos.y, m.absPos.z, + -m.absPos.x, -m.absPos.y, m.absPos.z+0.5, 1, 0.8,0.8,0.8, &draw_name); + } + + //--------------------------------- Draw player and ball arrows + + Vector3f me = headToFieldT.toVector3f(); + + roboviz->drawLine(-me.x, -me.y, me.z, -me.x, -me.y, me.z+0.5, 2,1,0,0,&draw_name); + roboviz->drawLine(-me.x, -me.y, me.z, -me.x+0.2, -me.y, me.z+0.2, 2,1,0,0,&draw_name); + roboviz->drawLine(-me.x, -me.y, me.z, -me.x-0.2, -me.y, me.z+0.2, 2,1,0,0,&draw_name); + + //There is no need to draw the ball position here (but it works well) + + /*static Vector3f last_known_ball_pos = Vector3f(); + if(world.ball_seen){ + last_known_ball_pos = headToFieldT * world.ball_rel_pos_cart; + } + + Vector3f &b = last_known_ball_pos; + + roboviz->drawLine(b.x, b.y, b.z, b.x, b.y, b.z+0.5, 2,1,1,0,&draw_name); + roboviz->drawLine(b.x, b.y, b.z, b.x-0.2, b.y, b.z+0.2, 2,1,1,0,&draw_name); + roboviz->drawLine(b.x, b.y, b.z, b.x+0.2, b.y, b.z+0.2, 2,1,1,0,&draw_name);*/ + + roboviz->swapBuffers(&draw_name); + + +} + + +//================================================================================================= +//==================================================================== Refresh / Identify / Collect +//================================================================================================= + + +/** + * Gather markers with known absolute z: line endpoints + foot contact points + [toe contact points] + **/ +void Field::gather_ground_markers(){ + + /** + * Add NAO's feet ground contact points to zmarks + * Dependency: the agent's feet must be touching the ground + * Flaws: + * - if the feet are touching other players or the ball (may be solved if it is problematic) + * - robot 4 may be touching the ground with its toes and they are currently ignored + **/ + + for(int i=0; i<2; i++){ + if( world.foot_touch[i] ){ //if this foot is touching the ground + + //Vector3f contactAux = world.foot_contact_pt[i]; //contact point using strange coordinate system + //Vector3f contactpt = Vector3f(contactAux.y,-contactAux.x,contactAux.z); // fix coordinate system for both feet + + Vector3f relPos = world.foot_contact_rel_pos[i]; + list_feet_contact_points.emplace_back( sVector3d({0,0,0}), relPos.toPolar(), relPos); + list_ground_markers.emplace_back( sVector3d({0,0,0}), relPos.toPolar(), relPos); + } + } + + //Deactivated since it did not produce better results, even when both feet are floating (it was only better when the robot fell) + /*const Types::BodyParts toePart[2] = {Types::ilLToe, Types::ilRToe}; + for(int i=0; i<2; i++){ + if( agent::model->getToeTouch(feetSide[i]) ){ //if this foot is touching the ground + + Vector3f contactAux = agent::model->getToeContact(feetSide[i]); //contact point using strange coordinate system + Vector3f contactpt = Vector3f(contactAux.y,-contactAux.x,contactAux.z); // fix coordinate system for both feet + Vector3f relPos = agent::model->getRelPositionOfBodyPoint(agent::model->getBodyPart(toePart[i]),contactpt); + + if(agent::model->getFootTouch(Types::iLeft) == false && agent::model->getFootTouch(Types::iRight) == false){ + zmarks.emplace_back( 0,0,0,relPos ); + } + } + }*/ + + + //Add all line endings to ground markers + for(const Line6f& l : list_segments){ + list_ground_markers.emplace_back( sVector3d({0,0,0}), l.startp, l.startc); + list_ground_markers.emplace_back( sVector3d({0,0,0}), l.endp, l.endc); + } + + non_collinear_ground_markers = list_ground_markers.size(); //Excludes corner flags + + //Add corner flags + for(const auto& c : list_landmarks_corners){ + list_ground_markers.emplace_back( sVector3d({0,0,0}), c.relPosPolar, c.relPosCart); + } + + + /** + * All the polar coordinates' errors are dependent on the distance + * Var[distance error] = Var[ed*d/100] + Var[er] (ed-error distance, er-error rounding) + * Var[distance error] = (d/100)^2 * Var[ed] + Var[er] + * Their importance will be given by Inverse-variance weighting + * + * Application: + * repetition = max(int(k*(1/var)),1), where k=1/1500 + * repetitions for 1 meter: 71 + * repetitions for 2 meters: 55 + * repetitions for >=19 meters: 1 + */ + + for(const auto& g : list_ground_markers){ + float var = pow(g.relPosPolar.x / 100.f,2) * var_distance + var_round_hundredth; + float w = 1.f/(1500.f*var); //weight = (1/var)*k where k is a constant to transform the large weights into number of repetitions + int repetitions = max(int(w),1); + + list_weighted_ground_markers.insert(list_weighted_ground_markers.end(), repetitions, g); + } +} + + +/** + * Update markers after visual step + * Marks attributes: abs(x,y,z), rel(r,h,v) + * Possible markers: + * - 8 landmarks + * - line endings: + * - 8 @ field corners + * - 12 @ penalty box corners + * - 20 @ center ring + * - 2 @ halfway line + * - 8 noisy estimates from corner-originated lines + * */ +void Field::update(){ + + //no need to reserve space since these vectors will expand mostly in the first cycles + list_segments.clear(); + list_landmarks.clear(); + list_landmarks_corners.clear(); + list_landmarks_goalposts.clear(); + list_feet_contact_points.clear(); + list_known_markers.clear(); + list_unknown_markers.clear(); + list_known_segments.clear(); + list_ground_markers.clear(); + list_weighted_ground_markers.clear(); + + //----------------------------------------- Pre-processing: prepare landmark lists + + for(int i=0; i<8; i++){ + sFixedMarker *l8; + const sFieldPoint *fp; + World::sLMark *l = &world.landmark[i]; + if (l->pos.x == -15 && l->pos.y == -10) {l8 = &list_8_landmarks::_corner_mm; fp = &cFieldPoints::corner_mm;} + else if(l->pos.x == -15 && l->pos.y == +10) {l8 = &list_8_landmarks::_corner_mp; fp = &cFieldPoints::corner_mp;} + else if(l->pos.x == +15 && l->pos.y == -10) {l8 = &list_8_landmarks::_corner_pm; fp = &cFieldPoints::corner_pm;} + else if(l->pos.x == +15 && l->pos.y == +10) {l8 = &list_8_landmarks::_corner_pp; fp = &cFieldPoints::corner_pp;} + else if(l->pos.x == -15 && l->pos.y < 0) {l8 = &list_8_landmarks::_goal_mm; fp = &cFieldPoints::goal_mm; } + else if(l->pos.x == -15 && l->pos.y > 0) {l8 = &list_8_landmarks::_goal_mp; fp = &cFieldPoints::goal_mp; } + else if(l->pos.x == +15 && l->pos.y < 0) {l8 = &list_8_landmarks::_goal_pm; fp = &cFieldPoints::goal_pm; } + else if(l->pos.x == +15 && l->pos.y > 0) {l8 = &list_8_landmarks::_goal_pp; fp = &cFieldPoints::goal_pp; } + else{ return; } + + if(l->seen){ + l8->set_relPos(l->rel_pos); + l8->visible = true; + + sMarker seen_mark(fp, l->rel_pos); + list_landmarks.push_back(seen_mark); + list_known_markers.push_back(seen_mark); + + if (l->isCorner){ list_landmarks_corners.push_back( seen_mark); } + else { list_landmarks_goalposts.push_back(seen_mark); } + }else{ + l8->visible = false; + } + } + + //----------------------------------------- Pre-processing: prepare lines and landmarks' coordinates sign + + for(const auto& l : world.lines_polar) { + list_segments.emplace_back(l.start, l.end); + } + + //----------------------------------------- Gather markers with known absolute z: line endpoints + foot contact points + + gather_ground_markers(); + +} + + + + + + + + +void Field::update_from_transformation(const Matrix4D& tmatrix){ + + /** + * Identify segments based on transformation matrix + * + * Identification starts from longest to shortest line + * The visible line segment is identified if there is only 1 close field line + * If there is more than 1 close field line and all but 1 were already taken, it is still identified + */ + + //----------------------------------------------- get lines ordered from largest to shortest + vector lines_descending_length; + for(auto& l : list_segments){ + lines_descending_length.push_back(&l); + } + + //Sort from largest to smallest radius + sort(lines_descending_length.begin(),lines_descending_length.end(), + [](const Line6f* a, const Line6f* b) { return (a->length > b->length); }); + + //----------------------------------------------- identify lines + + for(const Line6f* l : lines_descending_length){ + Vector3f l_abs[2] = {tmatrix * l->startc, tmatrix * l->endc}; + + float l_angle = atan2f(l_abs[1].y - l_abs[0].y, l_abs[1].x - l_abs[0].x); + + const float min_err = 0.3; //maximum allowed distance (startdist + enddist < 0.3m) + const sFieldSegment* best_line = nullptr; + for(const auto& s : cFieldLineSegments::list){ //find distance to closest field line + + //Skip field line if seen line is substantially larger + if( l->length > (s.length + 0.7) ){ continue; } + + //Skip field line if orientation does not match + float line_angle_difference = normalize_line_angle_rad(l_angle - s.angle); + if(line_angle_difference > 0.26) continue; //tolerance 15deg + + //Skip field line if it was already identified + bool already_identified = false; + for(const auto& k : list_known_segments){ + if(k.fieldSegment == &s){ already_identified=true; break; } + } + if(already_identified) continue; + + //Error is the sum of the distance of a single line segment to both endpoints of seen line + float err = fieldLineSegmentDistToCart2DPoint(s,l_abs[0].to2d()); + if(err < min_err) err += fieldLineSegmentDistToCart2DPoint(s,l_abs[1].to2d()); + + if(err < min_err){ + if(best_line == nullptr){ best_line = &s; } //Save the field line for now (others may emerge) + else{ + best_line = nullptr; //Two close field lines, none of which was taken yet, so abort + break; + } + } + } + + if(best_line != nullptr){ + + //-------------- Fix the seen line's start<->end order to match the corresponding field line + + int l_index[2] = {0,1}; //line index of [0]start and [1]end points + + if(normalize_vector_angle_rad(l_angle - best_line->angle) > 1.57079633f){ // they point in opposite directions + l_index[0] = 1; + l_index[1] = 0; + } + + const Vector3f *lAbs[2] = {&l_abs[l_index[0]], &l_abs[l_index[1]]}; + const Vector3f *lRelP[2] = {&l->get_polar_pt(l_index[0]), &l->get_polar_pt(l_index[1])}; + const Vector3f *lRelC[2] = {&l->get_cart_pt(l_index[0]), &l->get_cart_pt(l_index[1])}; + + //-------------- Fix the absolute coordinates with field information + + bool isInFoV[2] = {false,false}; + + //1st: recognize endpoints as field points (& save known markers) + + /** + * //---------------------------------------------- General solution + * All points reasonably within the FoV are identified + * Noise applied horizontally sigma=0.1225, Pr[-0.5 0.2 + * + * Warning 2: sometimes the error of phi and theta is larger than expected, producing points like + * (rel polar: 0.57,-36.36,-54.41) (rel cart: 0.267,-0.1967,-0.4635) + * which goes with the theory that the FoV is actually defined as a cone (a bit unrealistic though) + * current solution: cone_angle < hor_FoV-5 + */ + + for( int i=0; i<2; i++){ + float cone_angle = acosf(lRelC[i]->x / lRelP[i]->x); //angle between vector and (1,0,0) + const float max_cone_angle = (cHalfHorizontalFoV-5)*M_PI/180; + + if(cone_angle < max_cone_angle && lRelC[i]->x > 0.2){ + list_known_markers.emplace_back(best_line->point[i], *lRelP[i], *lRelC[i]); + isInFoV[i] = true; + } + } + + //2nd: use real coordinates if point was recognized, otherwise push it to a valid position (& save segment and unknown markers) + + const Line6f field_line(best_line->point[0]->get_vector(), best_line->point[1]->get_vector(), best_line->length); + + sVector3d l_pt_d[2]; //final line segment points (double precision floating-points) + + for( int i=0; i<2; i++){ + if(isInFoV[i]){ + l_pt_d[i] = best_line->point[i]->pt; //set recognized point's abs coordinates + }else{ + Vector3f p = field_line.segmentPointClosestToCartPoint(*lAbs[i]); //push point to closest valid position + l_pt_d[i].set(p); //set unknown point's estimated coordinates + list_unknown_markers.emplace_back(best_line, l_pt_d[i], *lRelP[i], *lRelC[i]); + } + } + + //-------------- Save identified line segment + list_known_segments.emplace_back(sMarker(l_pt_d[0],*lRelP[0],*lRelC[0]),sMarker(l_pt_d[1],*lRelP[1],*lRelC[1]), l->length, best_line); + + } + } +} + +void Field::update_unknown_markers(const Matrix4D& tmatrix){ + + for(auto& u : list_unknown_markers){ + + //Transform marker to world frame + Vector3f raw_abs_pos = tmatrix * u.relPosCart; + + //Push marker to existing field segment + const Line6f field_seg( u.fieldSeg->point[0]->get_vector(), u.fieldSeg->point[1]->get_vector(), u.fieldSeg->length); + Vector3f fixed_abs_pos = field_seg.segmentPointClosestToCartPoint(raw_abs_pos); //push point to closest valid position + + u.absPos = sVector3d({fixed_abs_pos.x, fixed_abs_pos.y, fixed_abs_pos.z}); + } +} + + +//================================================================================================= +//================================================================================== Math utilities +//================================================================================================= + + +/** + * Field lines are on the ground (z=0), so the method is simplified + */ +float Field::fieldLineSegmentDistToCartPoint(const sFieldSegment& fLine, const Vector3f& cp){ + + //Line segment vector (start -> end) + float vx = fLine.point[1]->pt.x - fLine.point[0]->pt.x; + float vy = fLine.point[1]->pt.y - fLine.point[0]->pt.y; + + Vector3f w1(cp.x - fLine.point[0]->pt.x, cp.y - fLine.point[0]->pt.y, cp.z); // vector: (segment start -> point) + if (w1.x * vx + w1.y * vy <= 0) + return w1.length();// if angle between vectors is >=90deg, we return the distance to segment start + + Vector3f w2(cp.x - fLine.point[1]->pt.x, cp.y - fLine.point[1]->pt.y, cp.z); // vector: (segment end -> point) + if (w2.x * vx + w2.y * vy >= 0) + return w2.length(); //if angle between vectors is <=90deg, we return the distance to segment end + + Vector3f v_cross_w1(vy * w1.z, - vx * w1.z, vx * w1.y - vy * w1.x); + return v_cross_w1.length() / fLine.length; //distance line to point (area of parallelogram divided by base gives height) + +} + +/** + * Field lines are on the ground (z=0), so the method is simplified + */ +float Field::fieldLineSegmentDistToCart2DPoint(const sFieldSegment& fLine, const Vector& cp){ + + const Vector segment_start(fLine.point[0]->pt.x, fLine.point[0]->pt.y); + const Vector segment_end( fLine.point[1]->pt.x, fLine.point[1]->pt.y ); + + //Line segment vector (start -> end) + Vector v(segment_end-segment_start); + + Vector w1(cp - segment_start);// vector: (segment start -> point) + + if(w1.innerProduct(v) <= 0) + return w1.length();// if angle between vectors is >=90deg, we return the distance to segment start + + Vector w2(cp - segment_end); // vector: (segment end -> point) + if(w2.innerProduct(v) >= 0) + return w2.length(); //if angle between vectors is <=90deg, we return the distance to segment end + + return fabsf(v.crossProduct(w1)) / fLine.length; //distance line to point (area of parallelogram divided by base gives height) +} \ No newline at end of file diff --git a/cpp/localization/Field.h b/cpp/localization/Field.h new file mode 100644 index 0000000..9d75f8b --- /dev/null +++ b/cpp/localization/Field.h @@ -0,0 +1,503 @@ +/** + * FILENAME: Field + * DESCRIPTION: Field map + * AUTHOR: Miguel Abreu (m.abreu@fe.up.pt) + * DATE: 2021 + */ + +#pragma once +#include "Vector3f.h" +#include "Singleton.h" +#include "Matrix4D.h" +#include "Line6f.h" +#include +#include + +using namespace std; + + +class Field { + friend class Singleton; + +private: + + Field(){}; + void gather_ground_markers(); + +public: + +//================================================================================================= +//====================================================================================== Structures +//================================================================================================= + + struct sVector3d { + double x,y,z; + + //sVector3d(const Vector3f& v) : x(v.x), y(v.y), z(v.z) {} + + Vector3f get_vector() const { + return Vector3f(x,y,z); + } + + void set(const sVector3d &pt){ + x=pt.x; y=pt.y; z=pt.z; + } + + void set(const Vector3f &pt){ + x=pt.x; y=pt.y; z=pt.z; + } + + float dist(const Vector3f &other) const{ + float dx = x-other.x; + float dy = y-other.y; + float dz = z-other.z; + return sqrtf(dx*dx+dy*dy+dz*dz); + } + + }; + + struct sFieldPoint { + const sVector3d pt; + const char name[10]; + + Vector3f get_vector() const { + return Vector3f(pt.x,pt.y,pt.z); + } + }; + + struct sFieldSegment { + const sFieldPoint * const point[2]; + const double length; + const double angle; + const char name[8]; + }; + + + struct sMarker { + /** + * Estimated absolute position based on the transformation matrix and field knowledge + */ + sVector3d absPos; + + /** + * Pointer to corresponding field point (if reasonably inside the FoV) + * The coordinates are the same as "absPos" but it provides other features: + * - Name of the field point + * - Knowledge that this marker corresponds to a field point (nullptr otherwise) + * - The address of the fieldPt may be compared with field segment endpoints + */ + const sFieldPoint *fieldPt = nullptr; + + /** + * Pointer to corresponding field segment + * This variable is currently set only for unknown markers + * (i.e. those which are known to belong to a field line, but whose field point is unknown) + */ + const sFieldSegment *fieldSeg = nullptr; + + Vector3f relPosPolar; + Vector3f relPosCart; + + /** + * Default constructor + */ + sMarker() : absPos({0,0,0}), relPosPolar(Vector3f()), relPosCart(Vector3f()) {}; + + /** + * Constructor with absolute position and relative polar coordinates (the cartesian version is computed) + */ + sMarker(const sVector3d& absPos_, const Vector3f& relPosPolar_) + : absPos(absPos_), relPosPolar(relPosPolar_), relPosCart(relPosPolar_.toCartesian()) {}; + + /** + * Constructor with field point and relative polar coordinates (the cartesian version is computed) + */ + sMarker(const sFieldPoint* fieldPt_, const Vector3f& relPosPolar_) + : absPos(fieldPt_->pt), fieldPt(fieldPt_), relPosPolar(relPosPolar_), relPosCart(relPosPolar_.toCartesian()) {}; + + /** + * Constructor with float absolute position and relative polar coordinates (the cartesian version is computed) + */ + sMarker(const Vector3f& absPos_, const Vector3f& relPosPolar_) + : absPos(sVector3d({absPos_.x,absPos_.y,absPos_.z})), relPosPolar(relPosPolar_), relPosCart(relPosPolar_.toCartesian()) {}; + + /** + * Constructor with absolute position, relative polar & cartesian coordinates + */ + sMarker(const sVector3d& absPos_, const Vector3f& relPosPolar_, const Vector3f& relPosCart_) + : absPos(absPos_), relPosPolar(relPosPolar_), relPosCart(relPosCart_) {}; + + /** + * Constructor with field segment, absolute position, relative polar & cartesian coordinates (e.g. unknown marker) + */ + sMarker(const sFieldSegment* fieldSeg_, const sVector3d& absPos_, const Vector3f& relPosPolar_, const Vector3f& relPosCart_) + : fieldSeg(fieldSeg_), absPos(absPos_), relPosPolar(relPosPolar_), relPosCart(relPosCart_) {}; + + /** + * Constructor with field point, relative polar & cartesian coordinates + */ + sMarker(const sFieldPoint* fieldPt_, const Vector3f& relPosPolar_, const Vector3f& relPosCart_) + : absPos(fieldPt_->pt), fieldPt(fieldPt_), relPosPolar(relPosPolar_), relPosCart(relPosCart_) {}; + + + }; + + struct sSegment { + + /** + * Order of start and end is the same as the corresponding fieldSegment + * [0]-start, [1]-end + */ + sMarker point[2]; + + float length; //visible segment length + const sFieldSegment* fieldSegment; //Corresponding field segment if we had full visibility + + /** + * Constructor + */ + sSegment(const sMarker& start, const sMarker& end, float length_, const sFieldSegment* fieldSegment_) + : point{start,end}, length(length_), fieldSegment(fieldSegment_) {}; + + }; + + struct sFixedMarker { + bool visible; + Vector3f relPosPolar; + Vector3f relPosCart; + + /** + * Default constructor + */ + sFixedMarker() : relPosPolar(Vector3f()), relPosCart(Vector3f()), visible(false) {}; + + void set_relPos(Vector3f relPosPolar_){ + relPosPolar = relPosPolar_; + relPosCart = relPosPolar_.toCartesian(); + } + + }; + +//================================================================================================= +//================================================================================= Field constants +//================================================================================================= + + /** + * Constant field dimensions + */ + static constexpr double cFieldLength = 30.0, cFieldWidth = 20.0, cPenaltyLength = 1.8, cPenaltyWidth = 6.0; + static constexpr double cGoalWidth = 2.1, cGoalDepth = 0.6, cGoalHeight = 0.8; + + static constexpr double cHalfFielfLength = cFieldLength/2.0, cHalfFieldWidth = cFieldWidth/2.0; + static constexpr double cHalfGoalWidth = cGoalWidth/2.0, cHalfPenaltyLength = cPenaltyLength/2.0; + static constexpr double cHalfPenaltyWidth = cPenaltyWidth/2.0; + + static constexpr double cPenaltyBoxDistX = cHalfFielfLength-cPenaltyLength; + static constexpr double cRingLineLength = 1.2360679774997897; + + static constexpr float cHalfHorizontalFoV = 60; + static constexpr float cHalfVerticalFoV = 60; + + static constexpr float stdev_distance = 0.0965; //st. deviation of error ed (distance error=d/100*ed) + static constexpr float var_distance = 0.00931225; // variance of error ed (distance error=d/100*ed) + static constexpr float var_round_hundredth = 0.01*0.01/12; //variance of uniformly distributed random variable [-0.005,0.005] + + + class cFieldPoints{ + public: + /** + * Constant list of field points + * Notation + * "PT1-.-PT2" midpoint between PT1 and PT2 (2D/3D) + * "PT1-PT2" point between PT1 and PT2 (in 2D only) + */ + static constexpr std::array list {{ + {-cHalfFielfLength,-cHalfGoalWidth, cGoalHeight, "post--"}, {-cHalfFielfLength, cHalfGoalWidth, cGoalHeight, "post-+"}, //Goalposts x<0 + { cHalfFielfLength,-cHalfGoalWidth, cGoalHeight, "post+-"}, { cHalfFielfLength, cHalfGoalWidth, cGoalHeight, "post++"}, //Goalposts x>0 + {-cHalfFielfLength,-cHalfFieldWidth,0, "corner--"}, {-cHalfFielfLength, cHalfFieldWidth,0, "corner-+"}, //Corners x<0 + { cHalfFielfLength,-cHalfFieldWidth,0, "corner+-"}, { cHalfFielfLength, cHalfFieldWidth,0, "corner++"}, //Corners x>0 + {0,-cHalfFieldWidth, 0, "halfway-"}, // Halfway line ending y<0 + {0, cHalfFieldWidth, 0, "halfway+"}, // Halfway line ending y>0 + {-cHalfFielfLength, -cHalfPenaltyWidth, 0, "boxBack--"}, {-cHalfFielfLength, cHalfPenaltyWidth, 0, "boxBack-+"}, //Penalty box goal line corner x<0 + { cHalfFielfLength, -cHalfPenaltyWidth, 0, "boxBack+-"}, { cHalfFielfLength, cHalfPenaltyWidth, 0, "boxBack++"}, //Penalty box goal line corner x>0 + {-cPenaltyBoxDistX, -cHalfPenaltyWidth, 0, "boxFrnt--"}, {-cPenaltyBoxDistX, cHalfPenaltyWidth, 0, "boxFrnt-+"}, //Penalty box front corner x<0 + { cPenaltyBoxDistX, -cHalfPenaltyWidth, 0, "boxFrnt+-"}, { cPenaltyBoxDistX, cHalfPenaltyWidth, 0, "boxFrnt++"}, //Penalty box front corner x>0 + {2, 0, 0, "r0"}, { 1.6180339887498948, 1.1755705045849463, 0, "r36" }, //(18,19) Ring 0/36 deg + {0.61803398874989485, 1.9021130325903071, 0, "r72" }, {-0.61803398874989485, 1.9021130325903071, 0, "r108"}, //(20,21) Ring 72/108 deg + {-1.6180339887498948, 1.1755705045849463, 0, "r144"}, {-2, 0, 0, "r180"}, //(22,23) Ring 144/180 deg + {-1.6180339887498948, -1.1755705045849463, 0, "r216"}, {-0.61803398874989485, -1.9021130325903071, 0, "r252"}, //(24,25) Ring 216/252 deg + {0.61803398874989485, -1.9021130325903071, 0, "r288"}, { 1.6180339887498948, -1.1755705045849463, 0, "r324"} //(26,27) Ring 288/324 deg + }}; + + static constexpr const sFieldPoint &goal_mm = list[0]; //Goalpost x<0 y<0 + static constexpr const sFieldPoint &goal_mp = list[1]; //Goalpost x<0 y>0 + static constexpr const sFieldPoint &goal_pm = list[2]; //Goalpost x>0 y<0 + static constexpr const sFieldPoint &goal_pp = list[3]; //Goalpost x>0 y>0 + + static constexpr const sFieldPoint &corner_mm = list[4]; //Corner x<0 y<0 + static constexpr const sFieldPoint &corner_mp = list[5]; //Corner x<0 y>0 + static constexpr const sFieldPoint &corner_pm = list[6]; //Corner x>0 y<0 + static constexpr const sFieldPoint &corner_pp = list[7]; //Corner x>0 y>0 + + static constexpr const sFieldPoint &halfway_m = list[8]; //Halfway line ending y<0 + static constexpr const sFieldPoint &halfway_p = list[9]; //Halfway line ending y>0 + + static constexpr const sFieldPoint &boxgoal_mm = list[10]; //Penalty box goal line corner x<0 y<0 + static constexpr const sFieldPoint &boxgoal_mp = list[11]; //Penalty box goal line corner x<0 y>0 + static constexpr const sFieldPoint &boxgoal_pm = list[12]; //Penalty box goal line corner x>0 y<0 + static constexpr const sFieldPoint &boxgoal_pp = list[13]; //Penalty box goal line corner x>0 y>0 + + static constexpr const sFieldPoint &box_mm = list[14]; //Penalty box front corner x<0 y<0 + static constexpr const sFieldPoint &box_mp = list[15]; //Penalty box front corner x<0 y>0 + static constexpr const sFieldPoint &box_pm = list[16]; //Penalty box front corner x>0 y<0 + static constexpr const sFieldPoint &box_pp = list[17]; //Penalty box front corner x>0 y>0 + + static constexpr const sFieldPoint *rings = &list[18]; //iterator for 10 ring points + + }; + + + + /** + * Constant list of field line segments + * Each line segment has 3 characteristics: {startc, endc, length, angle, print name}, + * The angle is always positive, in [0,180[, and corresponds to the vector defined by (end-start) + * The print name should be used for printing purposes only, + * since the line segment can be identified by its constant index or address + */ + + class cFieldLineSegments{ + public: + static constexpr double c0deg = 0, c36deg = 0.62831853071795865, c72deg = 1.2566370614359173; + static constexpr double c90deg = 1.5707963267948966, c108deg = 1.8849555921538759, c144deg = 2.5132741228718346; + + static constexpr std::array list {{ + {&cFieldPoints::corner_mm, &cFieldPoints::corner_pm, cFieldLength, c0deg , "side-"}, // Sideline y<0 + {&cFieldPoints::corner_mp, &cFieldPoints::corner_pp, cFieldLength, c0deg , "side+"}, // Sideline y>0 + {&cFieldPoints::corner_mm, &cFieldPoints::corner_mp, cFieldWidth, c90deg , "goal-"}, // Goal line x<0 + {&cFieldPoints::corner_pm, &cFieldPoints::corner_pp, cFieldWidth, c90deg , "goal+"}, // Goal line x>0 + {&cFieldPoints::halfway_m, &cFieldPoints::halfway_p, cFieldWidth, c90deg , "halfway"},// Halfway line + {&cFieldPoints::boxgoal_mm, &cFieldPoints::box_mm, cPenaltyLength, c0deg , "box--"}, // Penalty box sideline x<0 y<0 + {&cFieldPoints::boxgoal_mp, &cFieldPoints::box_mp, cPenaltyLength, c0deg , "box-+"}, // Penalty box sideline x<0 y>0 + {&cFieldPoints::box_pm, &cFieldPoints::boxgoal_pm, cPenaltyLength, c0deg , "box+-"}, // Penalty box sideline x>0 y<0 + {&cFieldPoints::box_pp, &cFieldPoints::boxgoal_pp, cPenaltyLength, c0deg , "box++"}, // Penalty box sideline x>0 y>0 + {&cFieldPoints::box_mm, &cFieldPoints::box_mp, cPenaltyWidth, c90deg , "box-"}, // Penalty box front line x<0 + {&cFieldPoints::box_pm, &cFieldPoints::box_pp, cPenaltyWidth, c90deg , "box+"}, // Penalty box front line x>0 + {&cFieldPoints::rings[0], &cFieldPoints::rings[1], cRingLineLength, c108deg, "rL0"}, // Ring line 0 -> 36 + {&cFieldPoints::rings[1], &cFieldPoints::rings[2], cRingLineLength, c144deg, "rL1"}, // Ring line 36 -> 72 + {&cFieldPoints::rings[3], &cFieldPoints::rings[2], cRingLineLength, c0deg , "rL2"}, // Ring line 72 <- 108 + {&cFieldPoints::rings[4], &cFieldPoints::rings[3], cRingLineLength, c36deg , "rL3"}, // Ring line 108 <- 144 + {&cFieldPoints::rings[5], &cFieldPoints::rings[4], cRingLineLength, c72deg , "rL4"}, // Ring line 144 <- 180 + {&cFieldPoints::rings[6], &cFieldPoints::rings[5], cRingLineLength, c108deg, "rL5"}, // Ring line 180 <- 216 + {&cFieldPoints::rings[7], &cFieldPoints::rings[6], cRingLineLength, c144deg, "rL6"}, // Ring line 216 <- 252 + {&cFieldPoints::rings[7], &cFieldPoints::rings[8], cRingLineLength, c0deg , "rL7"}, // Ring line 252 -> 288 + {&cFieldPoints::rings[8], &cFieldPoints::rings[9], cRingLineLength, c36deg , "rL8"}, // Ring line 288 -> 324 + {&cFieldPoints::rings[9], &cFieldPoints::rings[0], cRingLineLength, c72deg , "rL9"} // Ring line 324 -> 0 + }}; + + static constexpr const sFieldSegment &side_m = list[0]; // Sideline y<0 + static constexpr const sFieldSegment &side_p = list[1]; // Sideline y>0 + static constexpr const sFieldSegment &goal_m = list[2]; // Goal line x<0 + static constexpr const sFieldSegment &goal_p = list[3]; // Goal line x>0 + + static constexpr const sFieldSegment &halfway = list[4]; //Halfway line + + static constexpr const sFieldSegment &box_mm = list[5]; // Penalty box sideline x<0 y<0 + static constexpr const sFieldSegment &box_mp = list[6]; // Penalty box sideline x<0 y>0 + static constexpr const sFieldSegment &box_pm = list[7]; // Penalty box sideline x>0 y<0 + static constexpr const sFieldSegment &box_pp = list[8]; // Penalty box sideline x>0 y>0 + + static constexpr const sFieldSegment &box_m = list[9]; // Penalty box front line x<0 + static constexpr const sFieldSegment &box_p = list[10]; // Penalty box front line x>0 + + static constexpr const sFieldSegment *rings = &list[11]; //iterator for 10 ring lines + + }; + + + + sSegment* get_known_segment(const sFieldSegment &id){ + for( auto& s : list_known_segments){ + if(s.fieldSegment == &id) return &s; + } + return nullptr; + } + +//================================================================================================= +//================================================================================= Control methods +//================================================================================================= + + /** + * Update markers, based on existing landmarks and lines + */ + void update(); + + /** + * Update markers, based on transformation matrix and existing lines + */ + void update_from_transformation(const Matrix4D& tmatrix); + + /** + * Update the absolute position of unknown markers, based on transformation matrix and existing lines + */ + void update_unknown_markers(const Matrix4D& tmatrix); + + /** + * Draw estimates of all visible lines, markers, self position and ball + */ + void draw_visible(const Matrix4D& headToFieldT, bool is_right_side) const; + + /** + * Draw estimates of all visible lines, markers, self position and ball, but switch field sides + */ + void draw_visible_switch(const Matrix4D& headToFieldT) const; + + +//================================================================================================= +//============================================================================= Visible collections +//================================================================================================= + + + /** + * Visible landmarks: corners + goalposts + */ + vector list_landmarks; + + /** + * Visible corners + */ + vector list_landmarks_corners; + + /** + * Visible goalposts + */ + vector list_landmarks_goalposts; + + /** + * Identified visible line segments + * Their start and endpoints' order is the same as the corresponding field segment to which they point + */ + vector list_known_segments; + + /** + * Identified visible line segment endpoints + landmarks + * Each marker has a reference to the corresponding field point + */ + vector list_known_markers; + + /** + * Endpoints (of identified visible line segments) whose corresponding field point is unknown + * Each marker has a reference to the corresponding field segment + * Note: list_known_markers + list_unknown_markers excludes points from unknown line segments + */ + vector list_unknown_markers; + + /** + * Visible line endpoints + foot contact points + corner flags (the absolute position is always (0,0,0)) + */ + vector list_ground_markers; + + /** + * Number of visible non-collinear (line endpoints + foot contact points) + * Note: collinearity between lines is impossible; between feet<->lines it is possible but unlikely + */ + int non_collinear_ground_markers; + + /** + * Same as list_ground_markers but closer points are repeated more often (proportional to distance) + */ + vector list_weighted_ground_markers; + + /** + * Feet contact points + */ + vector list_feet_contact_points; + + /** + * Visible line segments + */ + vector list_segments; + + /** + * Redundant list of all 8 landmarks' relative cartesian coordinates (to speed up lookups) + * It's different from world.landmarks since it is ordered by position, not by name, and it holds the cartesian relPos + * (this ordering difference is important when the teams switch sides) + */ + + class list_8_landmarks{ + friend class Field; + private: + static sFixedMarker list[8]; + //static std::array list; + static constexpr sFixedMarker &_corner_mm = list[0]; + static constexpr sFixedMarker &_corner_mp = list[1]; + static constexpr sFixedMarker &_corner_pm = list[2]; + static constexpr sFixedMarker &_corner_pp = list[3]; + static constexpr sFixedMarker &_goal_mm = list[4]; + static constexpr sFixedMarker &_goal_mp = list[5]; + static constexpr sFixedMarker &_goal_pm = list[6]; + static constexpr sFixedMarker &_goal_pp = list[7]; + public: + static constexpr const sFixedMarker &corner_mm = list[0]; + static constexpr const sFixedMarker &corner_mp = list[1]; + static constexpr const sFixedMarker &corner_pm = list[2]; + static constexpr const sFixedMarker &corner_pp = list[3]; + static constexpr const sFixedMarker &goal_mm = list[4]; + static constexpr const sFixedMarker &goal_mp = list[5]; + static constexpr const sFixedMarker &goal_pm = list[6]; + static constexpr const sFixedMarker &goal_pp = list[7]; + }; + + + +//================================================================================================= +//================================================================================== Math Utilities +//================================================================================================= + + /** + * Compute 3D distance between field line segment and cartesian point + * Field lines are on the ground (z=0), so the method is simplified + */ + static float fieldLineSegmentDistToCartPoint(const sFieldSegment& fLine, const Vector3f& cp); + + /** + * Compute 2D distance between field line segment and cartesian point + * Field lines are on the ground (z=0), so the method is simplified + */ + static float fieldLineSegmentDistToCart2DPoint(const sFieldSegment& fLine, const Vector& cp); + + /** + * Normalize angle between 2 lines + * @return angle between 0 and 90 deg + */ + static inline float normalize_line_angle_deg(float deg){ + return 90.f-fabsf(fmodf(fabsf(deg), 180.f) - 90.f); + } + + /** + * Normalize angle between 2 lines + * @return angle between 0 and pi/2 rad + */ + static inline float normalize_line_angle_rad(float rad){ + return 1.57079633f-fabsf(fmod(fabsf(rad), 3.14159265f) - 1.57079633f); + } + + /** + * Normalize angle between 2 vectors + * @return angle between 0 and 180 deg + */ + static inline float normalize_vector_angle_deg(float deg){ + return 180.f-fabsf(fmodf(fabsf(deg), 360.f) - 180.f); + } + + /** + * Normalize angle between 2 vectors + * @return angle between 0 and pi rad + */ + static inline float normalize_vector_angle_rad(float rad){ + return 3.14159265f-fabsf(fmod(fabsf(rad), 6.28318531f) - 3.14159265f); + } + +}; + +typedef Singleton SField; \ No newline at end of file diff --git a/cpp/localization/FieldNoise.cpp b/cpp/localization/FieldNoise.cpp new file mode 100644 index 0000000..9fb992f --- /dev/null +++ b/cpp/localization/FieldNoise.cpp @@ -0,0 +1,104 @@ +#include "FieldNoise.h" + +double FieldNoise::log_prob_r(double d, double r){ + double c1 = 100.0 * ((r-0.005)/d - 1); + double c2 = 100.0 * ((r+0.005)/d - 1); + return log_prob_normal_distribution(0, 0.0965, c1, c2); +} + +double FieldNoise::log_prob_h(double h, double phi){ + double c1 = phi - 0.005 - h; + double c2 = phi + 0.005 - h; + return log_prob_normal_distribution(0, 0.1225, c1, c2); +} + +double FieldNoise::log_prob_v(double v, double theta){ + double c1 = theta - 0.005 - v; + double c2 = theta + 0.005 - v; + return log_prob_normal_distribution(0, 0.1480, c1, c2); +} + + + +double FieldNoise::log_prob_normal_distribution(double mean, double std, double interval1, double interval2){ + const double std2 = std * sqrt(2); + double erf1_x = (mean - interval1)/std2; //lowest interval, highest expression + double erf2_x = (mean - interval2)/std2; //highest interval, lowest expression + + /** + * Computing erf(erf_x1) - erf(erf_x2) is the same as erf(erf_x1) + erf(-erf_x2). + * Intuitively, the former seems more natural. + * So, computationally, the former expression is accurate in the following situations: + * - erf_x1 * erf_x2 <= 0 + * - |erf_x1| < 3 _or_ |erf_x2| < 3 ('3' is just a ballpark figure, not really relevant) + * + * Known issues: erf(6.5)-erf(6.0) = 1-1 = 0 (actual result: 2.148e-17) + * Using 128b functions only mitigates the issue, which is quite common actually. + * + * For these cases, erf_aux(x) is used, although it is not precise for |x|<1. + * - erf_aux(x) allows the computation of erf(6.5)-erf(6.0) with 7 digits of precision + * - erf_aux(x) allows the computation of erf(8.5)-erf(8.0) with 3 digits of precision + * - erf(12.5)-erf(12) = 0 (which is not good for probability comparison) + * - erf_aux(x) allows the computation of log(erf(6.5)-erf(6.0)) with 8 digits of precision + * - erf_aux(x) allows the computation of log(erf(8.5)-erf(8.0)) with 5 digits of precision + * - log(erf(12.5)-erf(12)) = -4647 (real: -147) (not accurate but good for comparisons) + * + * The complete algorithm below that uses erf_aux(x) is almost as fast as the one which uses erf() from math.h (+30% runtime) + */ + + const double log05 = log(0.5); + + //If they have different sign or |erf1_x|<1 || |erf2_x|<1 + if( fabs(erf1_x) < 2 || fabs(erf2_x) < 2 || ((erf1_x > 0) ^ (erf2_x > 0))){ + return log( erf(erf1_x) - erf(erf2_x) ) + log05; // same but faster than log( 0.5 * (erf(erf1_x) - erf(erf2_x)) ) + } + + //Otherwise use erf_aux(x) + //At this point, erf1_x and erf2_x have the same sign and are both distant from 0 + + double erf1 = erf_aux(erf1_x); + double erf2 = erf_aux(erf2_x); + + //These operations are described in the documentation of erf_aux() + if(erf1_x > 0){ //both are positive + return log( 1.0 - exp(erf1-erf2) ) + erf2 + log05; + }else{ //both are negative + return log( 1.0 - exp(erf2-erf1) ) + erf1 + log05; + } + +} + + + +double FieldNoise::erf_aux(double a){ + double r, s, t, u; + + t = fabs (a); + s = a * a; + + r = fma (-5.6271698458222802e-018, t, 4.8565951833159269e-016); + u = fma (-1.9912968279795284e-014, t, 5.1614612430130285e-013); + r = fma (r, s, u); + r = fma (r, t, -9.4934693735334407e-012); + r = fma (r, t, 1.3183034417266867e-010); + r = fma (r, t, -1.4354030030124722e-009); + r = fma (r, t, 1.2558925114367386e-008); + r = fma (r, t, -8.9719702096026844e-008); + r = fma (r, t, 5.2832013824236141e-007); + r = fma (r, t, -2.5730580226095829e-006); + r = fma (r, t, 1.0322052949682532e-005); + r = fma (r, t, -3.3555264836704290e-005); + r = fma (r, t, 8.4667486930270974e-005); + r = fma (r, t, -1.4570926486272249e-004); + r = fma (r, t, 7.1877160107951816e-005); + r = fma (r, t, 4.9486959714660115e-004); + r = fma (r, t, -1.6221099717135142e-003); + r = fma (r, t, 1.6425707149019371e-004); + r = fma (r, t, 1.9148914196620626e-002); + r = fma (r, t, -1.0277918343487556e-001); + r = fma (r, t, -6.3661844223699315e-001); + r = fma (r, t, -1.2837929411398119e-001); + r = fma (r, t, -t); + + return r; +} \ No newline at end of file diff --git a/cpp/localization/FieldNoise.h b/cpp/localization/FieldNoise.h new file mode 100644 index 0000000..9d91c49 --- /dev/null +++ b/cpp/localization/FieldNoise.h @@ -0,0 +1,91 @@ +/** + * FILENAME: FieldNoise + * DESCRIPTION: efficient computation of relative probabilities (for the noise model of the RoboCup 3DSSL) + * AUTHOR: Miguel Abreu (m.abreu@fe.up.pt) + * DATE: 2021 + */ + +#pragma once +#include "math.h" + +class FieldNoise{ + public: + + /** + * Log probability of real distance d, given noisy radius r + */ + static double log_prob_r(double d, double r); + + /** + * Log probability of real horizontal angle h, given noisy angle phi + */ + static double log_prob_h(double h, double phi); + + /** + * Log probability of real vertical angle v, given noisy angle theta + */ + static double log_prob_v(double v, double theta); + + + private: + + FieldNoise(){}; //Disable construction + + /** + * Log probability of normally distributed random variable X from interval1 to interval2: + * Log Pr[interval1 < X < interval2] + * @param mean mean of random variable + * @param std standard deviation of random variable + * @param interval1 minimum value of random variable + * @param interval2 maximum value of random variable + */ + static double log_prob_normal_distribution(double mean, double std, double interval1, double interval2); + + /** + * This function returns ln(1-sgn(a)*erf(a)), but sgn(a)*erf(a) = |erf(a)|, because sgn(a) == sgn(erf(a)) + * So, it returns: ln(1-|erf(a)|), which is <=0 + * + * NOTE: condition to guarantee high precision: |a|>= 1 + * + * how to compute erf(a) ? + * erf(a) = sgn(a)(1-e^erf_aux(a)) + * + * how to compute erf(a)+erf(b) ? + * erf(a)+erf(b) = sgn(a)(1-e^erf_aux(a)) + sgn(b)(1-e^erf_aux(b)) + * assuming a<0 and b>0: + * = e^erf_aux(a) -1 + 1 - e^erf_aux(b) + * = e^erf_aux(a) - e^erf_aux(b) + * + * example: erf(-7)+erf(7.1) + * if we computed it directly: + * erf(-7)+erf(7.1) = -0.9999999(...) + 0.9999999(...) = -1+1 = 0 (due to lack of precision, even if using double) + * if we use the proposed method: + * e^erf_aux(-7) - e^erf_aux(7.1) = -1.007340e-23 - -4.183826e-23 = 3.176486E-23 + * + * how to compute ln(erf(a)+erf(b)) ? + * assuming a<0 and b>0: + * ln(erf(a)+erf(b)) = ln( exp(erf_aux(a)) - exp(erf_aux(b)) ) + * = ln( exp(erf_aux(a)-k) - exp(erf_aux(b)-k) ) + k + * where k = min(erf_aux(a), erf_aux(b)) + * + * how to compute ln(erf(a)-erf(b)) ? (the difference is just the assumption) + * assuming a*b >= 0 + * + * ln(erf(a)-erf(b)) = ln( sgn(a)(1-e^erf_aux(a)) - sgn(a)(1-e^erf_aux(b)) ), note that sgn(a)=sgn(b) + * + * rule: log( exp(a) - exp(b) ) = log( exp(a-k) - exp(b-k) ) + k + * + * if(a>0) + * ln(erf(a)-erf(b)) = ln( 1 - e^erf_aux(a) - 1 + e^erf_aux(b)) + * = ln( exp(erf_aux(b)) - exp(erf_aux(a)) ) + * = ln( exp(erf_aux(b)-erf_aux(b)) - exp(erf_aux(a)-erf_aux(b)) ) + erf_aux(b) + * = ln( 1 - exp(erf_aux(a)-erf_aux(b)) ) + erf_aux(b) + * if(a<0) + * ln(erf(a)-erf(b)) = ln( -1 + e^erf_aux(a) + 1 - e^erf_aux(b)) + * = ln( exp(erf_aux(a)) - exp(erf_aux(b)) ) + * = ln( exp(erf_aux(a)-erf_aux(a)) - exp(erf_aux(b)-erf_aux(a)) ) + erf_aux(a) + * = ln( 1 - exp(erf_aux(b)-erf_aux(a)) ) + erf_aux(a) + * + */ + static double erf_aux(double a); +}; \ No newline at end of file diff --git a/cpp/localization/Geometry.cpp b/cpp/localization/Geometry.cpp new file mode 100644 index 0000000..79f19ac --- /dev/null +++ b/cpp/localization/Geometry.cpp @@ -0,0 +1,344 @@ +#include "Geometry.h" + + +/** + * This function returns the cosine of a given angle in degrees using the + * built-in cosine function that works with angles in radians. + * + * @param x an angle in degrees + * @return the cosine of the given angle + */ +float Cos(float x) { + return ( cos(x * M_PI / 180)); +} + +/** + * This function returns the sine of a given angle in degrees using the + * built-in sine function that works with angles in radians. + * + * @param x an angle in degrees + * @return the sine of the given angle + */ +float Sin(float x) { + return ( sin(x * M_PI / 180)); +} + +/** + * This function returns the principal value of the arc tangent of y/x in + * degrees using the signs of both arguments to determine the quadrant of the + * return value. For this the built-in 'atan2' function is used which returns + * this value in radians. + * + * @param x a float value + * @param y a float value + * @return the arc tangent of y/x in degrees taking the signs of x and y into + * account + */ +float ATan2(float x, float y) { + if (fabs(x) < EPSILON && fabs(y) < EPSILON) + return ( 0.0); + + return ( atan2(x, y) * 180 / M_PI ); +} + + + + +/************************************************************************/ +/******************* CLASS VECTOR ***********************************/ +/************************************************************************/ + +/*! Constructor for the Vector class. Arguments x and y + denote the x- and y-coordinates of the new position. + \param x the x-coordinate of the new position + \param y the y-coordinate of the new position + \return the Vector corresponding to the given arguments */ +Vector::Vector(float vx, float vy) : x(vx), y(vy) {} + +/*! Overloaded version of unary minus operator for Vectors. It returns the + negative Vector, i.e. both the x- and y-coordinates are multiplied by + -1. The current Vector itself is left unchanged. + \return a negated version of the current Vector */ +Vector Vector::operator-() const{ + return ( Vector(-x, -y)); +} + +/*! Overloaded version of the binary plus operator for adding a given float + value to a Vector. The float value is added to both the x- and + y-coordinates of the current Vector. The current Vector itself is + left unchanged. + \param d a float value which has to be added to both the x- and + y-coordinates of the current Vector + \return the result of adding the given float value to the current + Vector */ +Vector Vector::operator+(const float &d) const{ + return ( Vector(x + d, y + d)); +} + +/*! Overloaded version of the binary plus operator for Vectors. It returns + the sum of the current Vector and the given Vector by adding their + x- and y-coordinates. The Vectors themselves are left unchanged. + \param p a Vector + \return the sum of the current Vector and the given Vector */ +Vector Vector::operator+(const Vector &p) const{ + return ( Vector(x + p.x, y + p.y)); +} + +/*! Overloaded version of the binary minus operator for subtracting a + given float value from a Vector. The float value is + subtracted from both the x- and y-coordinates of the current + Vector. The current Vector itself is left unchanged. + \param d a float value which has to be subtracted from both the x- and + y-coordinates of the current Vector + \return the result of subtracting the given float value from the current + Vector */ +Vector Vector::operator-(const float &d) const{ + return ( Vector(x - d, y - d)); +} + +/*! Overloaded version of the binary minus operator for + Vectors. It returns the difference between the current + Vector and the given Vector by subtracting their x- and + y-coordinates. The Vectors themselves are left unchanged. + + \param p a Vector + \return the difference between the current Vector and the given + Vector */ +Vector Vector::operator-(const Vector &p) const { + return ( Vector(x - p.x, y - p.y)); +} + +/*! Overloaded version of the multiplication operator for multiplying a + Vector by a given float value. Both the x- and y-coordinates of the + current Vector are multiplied by this value. The current Vector + itself is left unchanged. + \param d the multiplication factor + \return the result of multiplying the current Vector by the given + float value */ +Vector Vector::operator*(const float &d) const{ + return ( Vector(x * d, y * d)); +} + +/*! Overloaded version of the multiplication operator for + Vectors. It returns the product of the current Vector + and the given Vector by multiplying their x- and + y-coordinates. The Vectors themselves are left unchanged. + + \param p a Vector + \return the product of the current Vector and the given Vector */ +Vector Vector::operator*(const Vector &p) const{ + return ( Vector(x * p.x, y * p.y)); +} + +/*! Overloaded version of the division operator for dividing a + Vector by a given float value. Both the x- and y-coordinates + of the current Vector are divided by this value. The current + Vector itself is left unchanged. + + \param d the division factor + \return the result of dividing the current Vector by the given float + value */ +Vector Vector::operator/(const float &d) const{ + return ( Vector(x / d, y / d)); +} + +/*! Overloaded version of the division operator for Vectors. It + returns the quotient of the current Vector and the given + Vector by dividing their x- and y-coordinates. The + Vectors themselves are left unchanged. + + \param p a Vector + \return the quotient of the current Vector and the given one */ +Vector Vector::operator/(const Vector &p) const{ + return ( Vector(x / p.x, y / p.y)); +} + +/*! Overloaded version of the assignment operator for assigning a given float + value to both the x- and y-coordinates of the current Vector. This + changes the current Vector itself. + \param d a float value which has to be assigned to both the x- and + y-coordinates of the current Vector */ +void Vector::operator=(const float &d) { + x = d; + y = d; +} + +/*! Overloaded version of the sum-assignment operator for Vectors. It + returns the sum of the current Vector and the given Vector by + adding their x- and y-coordinates. This changes the current Vector + itself. + \param p a Vector which has to be added to the current Vector */ +void Vector::operator+=(const Vector &p) { + x += p.x; + y += p.y; +} + +/*! Overloaded version of the sum-assignment operator for adding a given float + value to a Vector. The float value is added to both the x- and + y-coordinates of the current Vector. This changes the current + Vector itself. + \param d a float value which has to be added to both the x- and + y-coordinates of the current Vector */ +void Vector::operator+=(const float &d) { + x += d; + y += d; +} + +/*! Overloaded version of the difference-assignment operator for + Vectors. It returns the difference between the current + Vector and the given Vector by subtracting their x- and + y-coordinates. This changes the current Vector itself. + + \param p a Vector which has to be subtracted from the current + Vector */ +void Vector::operator-=(const Vector &p) { + x -= p.x; + y -= p.y; +} + +/*! Overloaded version of the difference-assignment operator for + subtracting a given float value from a Vector. The float + value is subtracted from both the x- and y-coordinates of the + current Vector. This changes the current Vector itself. + + \param d a float value which has to be subtracted from both the x- and + y-coordinates of the current Vector */ +void Vector::operator-=(const float &d) { + x -= d; + y -= d; +} + +/*! Overloaded version of the multiplication-assignment operator for + Vectors. It returns the product of the current Vector + and the given Vector by multiplying their x- and + y-coordinates. This changes the current Vector itself. + + \param p a Vector by which the current Vector has to be + multiplied */ +void Vector::operator*=(const Vector &p) { + x *= p.x; + y *= p.y; +} + +/*! Overloaded version of the multiplication-assignment operator for + multiplying a Vector by a given float value. Both the x- and + y-coordinates of the current Vector are multiplied by this + value. This changes the current Vector itself. + + \param d a float value by which both the x- and y-coordinates of the + current Vector have to be multiplied */ +void Vector::operator*=(const float &d) { + x *= d; + y *= d; +} + +/*! Overloaded version of the division-assignment operator for + Vectors. It returns the quotient of the current Vector + and the given Vector by dividing their x- and + y-coordinates. This changes the current Vector itself. + + \param p a Vector by which the current Vector is divided */ +void Vector::operator/=(const Vector &p) { + x /= p.x; + y /= p.y; +} + +/*! Overloaded version of the division-assignment operator for + dividing a Vector by a given float value. Both the x- and + y-coordinates of the current Vector are divided by this + value. This changes the current Vector itself. + + \param d a float value by which both the x- and y-coordinates of the + current Vector have to be divided */ +void Vector::operator/=(const float &d) { + x /= d; + y /= d; +} + +/*! Overloaded version of the inequality operator for Vectors. It + determines whether the current Vector is unequal to the given + Vector by comparing their x- and y-coordinates. + + \param p a Vector + \return true when either the x- or y-coordinates of the given Vector + and the current Vector are different; false otherwise */ +bool Vector::operator!=(const Vector &p) { + return ( (x != p.x) || (y != p.y)); +} + +/*! Overloaded version of the inequality operator for comparing a + Vector to a float value. It determines whether either the x- + or y-coordinate of the current Vector is unequal to the given + float value. + + \param d a float value with which both the x- and y-coordinates of the + current Vector have to be compared. + \return true when either the x- or y-coordinate of the current Vector + is unequal to the given float value; false otherwise */ +bool Vector::operator!=(const float &d) { + return ( (x != d) || (y != d)); +} + +/*! Overloaded version of the equality operator for Vectors. It + determines whether the current Vector is equal to the given + Vector by comparing their x- and y-coordinates. + + \param p a Vector + \return true when both the x- and y-coordinates of the given + Vector and the current Vector are equal; false + otherwise */ +bool Vector::operator==(const Vector &p) { + return ( (x == p.x) && (y == p.y)); +} + +/*! Overloaded version of the equality operator for comparing a + Vector to a float value. It determines whether both the x- + and y-coordinates of the current Vector are equal to the + given float value. + + \param d a float value with which both the x- and y-coordinates of the + current Vector have to be compared. + \return true when both the x- and y-coordinates of the current Vector + are equal to the given float value; false otherwise */ +bool Vector::operator==(const float &d) { + return ( (x == d) && (y == d)); +} + + +/*! This method determines the distance between the current + Vector and a given Vector. This is equal to the + magnitude (length) of the vector connecting the two positions + which is the difference vector between them. + + \param p a Vecposition + \return the distance between the current Vector and the given + Vector */ +float Vector::getDistanceTo(const Vector p) { + return ( (*this -p).length()); +} + + +/*! This method determines the magnitude (length) of the vector + corresponding with the current Vector using the formula of + Pythagoras. + + \return the length of the vector corresponding with the current + Vector */ +float Vector::length() const { + return ( sqrt(x * x + y * y)); +} + +float Vector::crossProduct(const Vector p) { + return this->x*p.y - this->y*p.x; +} + + +/** + * This methods returns the inner product of this vector with another + * + * @param other the other vector + * @return inner product + */ +float Vector::innerProduct(const Vector& other) const { + return x * other.x + y * other.y; +} \ No newline at end of file diff --git a/cpp/localization/Geometry.h b/cpp/localization/Geometry.h new file mode 100644 index 0000000..c4afa07 --- /dev/null +++ b/cpp/localization/Geometry.h @@ -0,0 +1,71 @@ +#ifndef GEOMETRY_H +#define GEOMETRY_H + +#include +#include + +using namespace std; + +#define EPSILON 1e-10 + +/** + * Useful functions to operate with angles in degrees + */ +float Cos(float x); +float Sin(float x); +float ATan2(float x, float y); + + +/** + * @class Vector + * + * @brief This class represents a position in the 2d space + * + * A position is represented by a x-axis coordinate and a + * y-axis coordinate or in polar coordinates (r, phi) + * + * @author Hugo Picado (hugopicado@ua.pt) + * @author Nuno Almeida (nuno.alm@ua.pt) + * Adapted - Miguel Abreu + */ +class Vector { +public: + Vector(float vx = 0, float vy = 0); + + // overloaded arithmetic operators + Vector operator-() const; + Vector operator+(const float &d) const; + Vector operator+(const Vector &p) const; + Vector operator-(const float &d) const; + Vector operator-(const Vector &p) const; + Vector operator*(const float &d) const; + Vector operator*(const Vector &p) const; + Vector operator/(const float &d) const; + Vector operator/(const Vector &p) const; + void operator=(const float &d); + void operator+=(const Vector &p); + void operator+=(const float &d); + void operator-=(const Vector &p); + void operator-=(const float &d); + void operator*=(const Vector &p); + void operator*=(const float &d); + void operator/=(const Vector &p); + void operator/=(const float &d); + bool operator!=(const Vector &p); + bool operator!=(const float &d); + bool operator==(const Vector &p); + bool operator==(const float &d); + + float getDistanceTo(const Vector p); + float crossProduct(const Vector p); + float length() const; + float innerProduct(const Vector &p) const; + +public: + float x; + float y; +}; + + + +#endif // GEOMETRY_H diff --git a/cpp/localization/Line6f.cpp b/cpp/localization/Line6f.cpp new file mode 100644 index 0000000..ad41754 --- /dev/null +++ b/cpp/localization/Line6f.cpp @@ -0,0 +1,232 @@ +#include "Line6f.h" + + + +Line6f::Line6f(const Vector3f &polar_s, const Vector3f &polar_e) : + startp(polar_s), endp(polar_e), startc(polar_s.toCartesian()), endc(polar_e.toCartesian()), length(startc.dist(endc)) {}; + +Line6f::Line6f(const Vector3f &cart_s, const Vector3f &cart_e, float length) : + startp(cart_s.toPolar()), endp(cart_e.toPolar()), startc(cart_s), endc(cart_e), length(length) {}; + +Line6f::Line6f(const Line6f &obj) : + startp(obj.startp), endp(obj.endp), startc(obj.startc), endc(obj.endc), length(obj.length) {}; + +Vector3f Line6f::linePointClosestToCartPoint(const Vector3f &cp) const{ + + /** + * Equation of this line: (we want to find t, such that (cp-p) is perpendicular to this line) + * p = startc + t*(endc - startc) + * + * Let vecp=(cp-start) and vecline=(end-start) + * Scalar projection of vecp in the direction of vecline: + * sp = vecp.vecline/|vecline| + * Find the ratio t by dividing the scalar projection by the length of vecline: + * t = sp / |vecline| + * So the final expression becomes: + * t = vecp.vecline/|vecline|^2 + */ + + + Vector3f lvec(endc-startc); //this line's vector + float t = (cp-startc).innerProduct(lvec) / (length*length); + + return startc + lvec*t; +} + +Vector3f Line6f::linePointClosestToPolarPoint(const Vector3f &pp) const{ + return linePointClosestToCartPoint(pp.toCartesian()); +} + +float Line6f::lineDistToCartPoint(const Vector3f &cp) const{ + return ((cp-startc).crossProduct(cp-endc)).length() / (endc-startc).length(); +} + +float Line6f::lineDistToPolarPoint(const Vector3f &pp) const{ + return lineDistToCartPoint(pp.toCartesian()); +} + +//source: http://geomalgorithms.com/a07-_distance.html#dist3D_Line_to_Line() +float Line6f::lineDistToLine(const Line6f &l) const{ + Vector3f u = endc - startc; + Vector3f v = l.endc - l.startc; + Vector3f w = startc - l.startc; + float a = u.innerProduct(u); // always >= 0 + float b = u.innerProduct(v); + float c = v.innerProduct(v); // always >= 0 + float d = u.innerProduct(w); + float e = v.innerProduct(w); + float D = a*c - b*b; // always >= 0 + float sc, tc; + + // compute the line parameters of the two closest points + if (D < 1e-8f) { // the lines are almost parallel + sc = 0.0; + tc = (b>c ? d/b : e/c); // use the largest denominator + } + else { + sc = (b*e - c*d) / D; + tc = (a*e - b*d) / D; + } + + // get the difference of the two closest points + Vector3f dP = w + (u * sc) - (v * tc); // = L1(sc) - L2(tc) + + return dP.length(); // return the closest distance +} + +Vector3f Line6f::segmentPointClosestToCartPoint(const Vector3f &cp) const{ + + /** + * Equation of this line: (we want to find t, such that (cp-p) is perpendicular to this line) + * p = startc + t*(endc - startc) + * + * Let vecp=(cp-start) and vecline=(end-start) + * Scalar projection of vecp in the direction of vecline: + * sp = vecp.vecline/|vecline| + * Find the ratio t by dividing the scalar projection by the length of vecline: + * t = sp / |vecline| + * So the final expression becomes: + * t = vecp.vecline/|vecline|^2 + * Since this version requires that p belongs to the line segment, there is an additional restriction: + * 0 < t < 1 + */ + + Vector3f lvec(endc-startc); //this line's vector + float t = (cp-startc).innerProduct(lvec) / (length*length); + + if(t<0) t=0; + else if(t>1) t=1; + + return startc + lvec*t; +} + +Vector3f Line6f::segmentPointClosestToPolarPoint(const Vector3f &pp) const{ + return segmentPointClosestToCartPoint(pp.toCartesian()); +} + +float Line6f::segmentDistToCartPoint(const Vector3f &cp) const{ + + Vector3f v = endc - startc; //line segment vector + Vector3f w1 = cp - startc; + + if ( w1.innerProduct(v) <= 0) return w1.length(); + + Vector3f w2 = cp - endc; + + if ( w2.innerProduct(v) >= 0) return w2.length(); + + return v.crossProduct(w1).length() / this->length; + +} + +float Line6f::segmentDistToPolarPoint(const Vector3f &pp) const{ + return segmentDistToCartPoint(pp.toCartesian()); +} + +//source: http://geomalgorithms.com/a07-_distance.html#dist3D_Segment_to_Segment() +float Line6f::segmentDistToSegment(const Line6f &other) const{ + + Vector3f u = endc - startc; + Vector3f v = other.endc - other.startc; + Vector3f w = startc - other.startc; + float a = u.innerProduct(u); // always >= 0 + float b = u.innerProduct(v); + float c = v.innerProduct(v); // always >= 0 + float d = u.innerProduct(w); + float e = v.innerProduct(w); + float D = a*c - b*b; // always >= 0 + float sc, sN, sD = D; // sc = sN / sD, default sD = D >= 0 + float tc, tN, tD = D; // tc = tN / tD, default tD = D >= 0 + + // compute the line parameters of the two closest points + if (D < 1e-8f) { // the lines are almost parallel + sN = 0.0; // force using point start on segment S1 + sD = 1.0; // to prevent possible division by 0.0 later + tN = e; + tD = c; + } + else { // get the closest points on the infinite lines + sN = (b*e - c*d); + tN = (a*e - b*d); + if (sN < 0.0) { // sc < 0 => the s=0 edge is visible + sN = 0.0; + tN = e; + tD = c; + } + else if (sN > sD) { // sc > 1 => the s=1 edge is visible + sN = sD; + tN = e + b; + tD = c; + } + } + + if (tN < 0.0) { // tc < 0 => the t=0 edge is visible + tN = 0.0; + // recompute sc for this edge + if (-d < 0.0) + sN = 0.0; + else if (-d > a) + sN = sD; + else { + sN = -d; + sD = a; + } + } + else if (tN > tD) { // tc > 1 => the t=1 edge is visible + tN = tD; + // recompute sc for this edge + if ((-d + b) < 0.0) + sN = 0; + else if ((-d + b) > a) + sN = sD; + else { + sN = (-d + b); + sD = a; + } + } + // finally do the division to get sc and tc + sc = (abs(sN) < 1e-8f ? 0.0 : sN / sD); + tc = (abs(tN) < 1e-8f ? 0.0 : tN / tD); + + // get the difference of the two closest points + Vector3f dP = w + (u * sc) - (v * tc); // = S1(sc) - S2(tc) + + return dP.length(); // return the closest distance + +} + + +Vector3f Line6f::midPointCart() const{ + return (startc+endc)/2; +} + +Vector3f Line6f::midPointPolar() const{ + return midPointCart().toPolar(); +} + + +bool Line6f::operator==(const Line6f& other) const { + return (startp == other.startp) && (endp == other.endp); +} + +const Vector3f &Line6f::get_polar_pt(const int index) const{ + if(index==0) return startp; + return endp; +} + +const Vector3f &Line6f::get_cart_pt(const int index) const{ + if(index==0) return startc; + return endc; +} + +Vector3f Line6f::get_polar_vector() const{ + return endp-startp; +} + +Vector3f Line6f::get_cart_vector() const{ + return endc-startc; +} + + + + diff --git a/cpp/localization/Line6f.h b/cpp/localization/Line6f.h new file mode 100644 index 0000000..03efecb --- /dev/null +++ b/cpp/localization/Line6f.h @@ -0,0 +1,185 @@ +/** + * FILENAME: Line6f + * DESCRIPTION: Simple line (segment) class + * AUTHOR: Miguel Abreu (m.abreu@fe.up.pt) + * DATE: 2021 + * + * Immutable Class for: + * 3D Line composed of 2 Vector3f points + * Optimized for: + * - regular access to cartesian coordinates + * - regular access to line segment length + **/ + +#pragma once +#include "Vector3f.h" + + +class Line6f { +public: + + /** + * Polar start coordinate + */ + const Vector3f startp; + + /** + * Polar end coordinate + */ + const Vector3f endp; + + /** + * Cartesian start coordinate + */ + const Vector3f startc; + + /** + * Cartesian end coordinate + */ + const Vector3f endc; + + /** + * Length of line segment limited by (start,end) + */ + const float length; + + /** + * Constructor + * @param polar_s polar start point + * @param polar_e polar end point + */ + Line6f(const Vector3f &polar_s, const Vector3f &polar_e); + + /** + * Constructor + * @param cart_s cartesian start point + * @param cart_e cartesian end point + * @param length line segment length + */ + Line6f(const Vector3f &cart_s, const Vector3f &cart_e, float length); + + /** + * Copy Constructor + * @param obj another line + */ + Line6f(const Line6f &obj); + + /** + * Find point in line defined by (start,end) closest to given point + * @param cp cartesian point + * @return point in this infinite line closest to given point + */ + Vector3f linePointClosestToCartPoint(const Vector3f &cp) const; + + /** + * Find point in line defined by (start,end) closest to given point + * @param pp polar point + * @return point in this infinite line closest to given point + */ + Vector3f linePointClosestToPolarPoint(const Vector3f &pp) const; + + /** + * Find distance between line defined by (start,end) and given point + * @param cp cartesian point + * @return distance between line defined by (start,end) and given point + */ + float lineDistToCartPoint(const Vector3f &cp) const; + + /** + * Find distance between line defined by (start,end) and given point + * @param pp polar point + * @return distance between line defined by (start,end) and given point + */ + float lineDistToPolarPoint(const Vector3f &pp) const; + + /** + * Find distance between line defined by (start,end) and given line + * @param l line + * @return distance between line defined by (start,end) and given line + */ + float lineDistToLine(const Line6f &l) const; + + /** + * Find point in line defined by (start,end) closest to given point + * @param cp cartesian point + * @return point in this infinite line closest to given point + */ + Vector3f segmentPointClosestToCartPoint(const Vector3f &cp) const; + + /** + * Find point in line defined by (start,end) closest to given point + * @param pp polar point + * @return point in this infinite line closest to given point + */ + Vector3f segmentPointClosestToPolarPoint(const Vector3f &pp) const; + + /** + * Find distance between line segment limited by (start,end) and given point + * @param cp cartesian point + * @return distance between line segment limited by (start,end) and given point + */ + float segmentDistToCartPoint(const Vector3f &cp) const; + + /** + * Find distance between line segment limited by (start,end) and given point + * @param pp polar point + * @return distance between line segment limited by (start,end) and given point + */ + float segmentDistToPolarPoint(const Vector3f &pp) const; + + /** + * Find distance between line segment limited by (start,end) and given line segment + * @param other line segment + * @return distance between line segment limited by (start,end) and given line segment + */ + float segmentDistToSegment(const Line6f &other) const; + + /** + * Find midpoint of line segment limited by (start,end) + * @return cartesian midpoint of line segment limited by (start,end) + */ + Vector3f midPointCart() const; + + /** + * Find midpoint of line segment limited by (start,end) + * @return polar midpoint of line segment limited by (start,end) + */ + Vector3f midPointPolar() const; + + /** + * Operator == + * @param other line + * @return true if both lines are the same + */ + bool operator==(const Line6f& other) const; + + /** + * Get polar line ending by index + * @param index (0)->start or (1)->end + * @return polar line ending according to given index + */ + const Vector3f &get_polar_pt(const int index) const; + + /** + * Get cartesian line ending by index + * @param index (0)->start or (1)->end + * @return cartesian line ending according to given index + */ + const Vector3f &get_cart_pt(const int index) const; + + /** + * Get polar vector (end-start) + * @return polar vector (end-start) + */ + Vector3f get_polar_vector() const; + + /** + * Get cartesian vector (end-start) + * @return cartesian vector (end-start) + */ + Vector3f get_cart_vector() const; + + + + +}; \ No newline at end of file diff --git a/cpp/localization/LocalizerV2.cpp b/cpp/localization/LocalizerV2.cpp new file mode 100644 index 0000000..5971e83 --- /dev/null +++ b/cpp/localization/LocalizerV2.cpp @@ -0,0 +1,1249 @@ +#include "LocalizerV2.h" +#include "math.h" +#include "iostream" +#include "World.h" + +using namespace std; + +static World& world = SWorld::getInstance(); + + +/** + * Compute 3D position and 3D orientation + * */ +void LocalizerV2::run(){ + + Field& fd = SField::getInstance(); + + stats_change_state(RUNNING); + + //------------------ WORKFLOW: 0 + + _is_uptodate = false; + _is_head_z_uptodate = false; + _steps_since_last_update++; + + prelim_reset(); //reset preliminary transformation matrix + + fd.update(); //update visible collections + int lines_no = fd.list_segments.size(); + int landmarks_no = fd.list_landmarks.size(); + + if( (landmarks_no == 0 && lines_no < 2) || (lines_no == 0) ){ + if(lines_no==0 && landmarks_no==0){ stats_change_state(BLIND); } else { stats_change_state(MINFAIL); } + return; + } + + //------------------ WORKFLOW: 1-2 + + if( ! find_z_axis_orient_vec() ){ return; } + + //------------------ WORKFLOW: 3-4 + + if(!( landmarks_no >1 ? find_xy() : guess_xy() )){ return; } + + //------------------ Update public variables + + commit_everything(); + + stats_change_state(DONE); + + //------------------ Statistics + + //Ball position stats + if(world.ball_seen){ + counter_ball += stats_sample_position_error(prelimHeadToField * world.ball_rel_pos_cart, + world.ball_cheat_abs_cart_pos, errorSum_ball); + } + + //print_report(); //uncomment to enable report (average errors + solution analysis) + +} + + + +//================================================================================================= +//=================================================================================== GSL Utilities +//================================================================================================= + + +void add_gsl_regression_sample(gsl_matrix* m, gsl_vector* v, int sample_no, const Vector3f& relativeCoord, double absoluteCoord, double translCoeffMult=1){ + + gsl_matrix_set(m, sample_no, 0, relativeCoord.x); + gsl_matrix_set(m, sample_no, 1, relativeCoord.y); + gsl_matrix_set(m, sample_no, 2, relativeCoord.z); + gsl_matrix_set(m, sample_no, 3, translCoeffMult); + gsl_vector_set(v, sample_no, absoluteCoord ); + +} + +template +gsl_vector* create_gsl_vector(const std::array &content){ + + gsl_vector* v = gsl_vector_alloc (SIZE); + + for(int i=0; i 0){ //if vec is (0,0,1) or (0,0,-1) we keep the default rotation axis + gx = -vec.y / aux; + gy = vec.x / aux; + } + + return Vector(gx,gy); +} + + +/** + * Rotate vector around ground axis defined as u=(0,0,1)x(Zvec)/|Zvec| + * Direction of rotation from Zvec to (0,0,1) + * To invert the rotation direction, invert Zvec.x and Zvec.y + * @param v vector to be rotated + * @param Zvec unit normal vector of rotated ground plane + */ +Vector3f fast_rotate_around_ground_axis(Vector3f v, Vector3f Zvec){ + + Vector u = get_ground_unit_vec_perpendicular_to(Zvec); + + //Angle between unit normal vector of original plane and unit normal vector of rotated plane: + //cos(a) = (ov.rv)/(|ov||rv|) = ((0,0,1).(rvx,rvy,rvz))/(1*1) = rvz + float& cos_a = Zvec.z; + //assert(cos_a <= 1); + if(cos_a > 1) cos_a = 1; //Fix: it happens rarely, no cause was yet detected + float sin_a = -sqrtf(1 - cos_a*cos_a); //invert sin_a to invert a (direction was defined in method description) + + const float i_cos_a = 1-cos_a; + const float uxuy_i = u.x*u.y*i_cos_a; + const float uxux_i = u.x*u.x*i_cos_a; + const float uyuy_i = u.y*u.y*i_cos_a; + const float uxsin_a = u.x*sin_a; + const float uysin_a = u.y*sin_a; + + float x = (cos_a + uxux_i ) * v.x + uxuy_i * v.y + uysin_a * v.z; + float y = uxuy_i * v.x + (cos_a + uyuy_i ) * v.y - uxsin_a * v.z; + float z = - uysin_a * v.x + uxsin_a * v.y + cos_a * v.z; + + return Vector3f(x,y,z); + +} + + +/** + * Compute Xvec and Yvec from Zvec and angle + * @param Zvec input z-axis orientation vector + * @param angle input rotation of Xvec around Zvec (rads) + * @param Xvec output x-axis orientation vector + * @param Yvec output y-axis orientation vector + */ +void fast_compute_XYvec_from_Zvec(const Vector3f& Zvec, float agent_angle, Vector3f& Xvec, Vector3f& Yvec){ + /** + * There are two coordinate systems being considered in this method: + * - The actual agent's vision (RELATIVE system -> RELsys) + * - A rotated perspective where the agent's seen Zvec is the real Zvec (ROTATED system -> ROTsys) + * (the agent's optical axis / line of sight is parallel to ground ) + * + * SUMMARY: + * I provide an angle which defines the agent's rotation around Zvec (in the ROTsys) + * E.g. suppose the agent is rotated 5deg, then in the ROTsys, the agent sees Xvec as being rotated -5deg + * I then rotate Xvec to the RELsys, and compute the Yvec using cross product + * + * STEPS: + * 1st. Compute ROTsys, by finding rotation of plane defined by normal vector Zvec, in relation to seen XY plane + * (whose seen normal vector is (0,0,1)). We need: axis of rotation (unit vector lying on XY plane) and angle (rads): + * rotation axis: + * u = (0,0,1)x(Zvec) (vector perpendicular to XY plane and Zvec) + * = (-ZvecY,ZvecX,0) (rotation will be counterclockwise when u points towards the observer) + * (so a negative angle will bring the agent to the ROTsys) + * angle between Zvec and (0,0,1): + * a = acos( ((0,0,1).(Zvec)) / (|(0,0,1)|*|Zvec|) ) + * = acos( ((0,0,1).(Zvec)) ) + * = acos( ZvecZ ) + * + * 2nd. Establish Xvec in ROTsys: + * Let agent_angle be the agent's angle. Then Xvec's angle is (b=-agent_angle). + * Xvec = (cos(b),sin(b),0) + * + * 3rd. Rotate Xvec to RELsys: + * Let R be the rotation matrix that rotates from ROTsys to RELsys (positive angle using u): + * Xvec = R * Xvec + * = R * (cos(b),sin(b),0) + * = (R00 * cos(b) + R01 * sin(b), R10 * cos(b) + R11 * sin(b), R20 * cos(b) + R21 * sin(b)) + * where R is: (rotation matrix from axis and angle https://en.wikipedia.org/wiki/Rotation_matrix#Rotation_matrix_from_axis_and_angle) + * R00 = cos(a) + ux*ux(1-cos(a)) R01 = ux*uy(1-cos(a)) + * R10 = uy*ux(1-cos(a)) R11 = cos(a) + uy*uy(1-cos(a)) + * R20 = -uy*sin(a) R21 = ux*sin(a) + * so Xvec becomes: + * XvecX = cos(a)*cos(b) + (1-cos(a))*(ux*ux*cos(b) + ux*uy*sin(b)) + * XvecY = cos(a)*sin(b) + (1-cos(a))*(uy*uy*sin(b) + ux*uy*cos(b)) + * XvecZ = sin(a)*(ux*sin(b) - uy*cos(b)) + * + * 4th. To find Yvec we have two options: + * A. add pi/2 to b and compute Yvec with the same expression used for Xvec + * B. Yvec = Zvec x Xvec (specifically in this order for original coordinate system) + */ + + Vector u = get_ground_unit_vec_perpendicular_to(Zvec); + + const float& cos_a = Zvec.z; + const float sin_a = sqrtf(1 - cos_a*cos_a); + const float uxuy = u.x * u.y; + const float b = -agent_angle; //Xvec's angle + const float cos_b = cosf(b); + const float sin_b = sinf(b); + const float i_cos_a = 1-cos_a; + + Xvec.x = cos_a * cos_b + i_cos_a * ( u.x*u.x*cos_b + uxuy*sin_b ); + Xvec.y = cos_a * sin_b + i_cos_a * ( u.y*u.y*sin_b + uxuy*cos_b ); + Xvec.z = sin_a * ( u.x*sin_b - u.y*cos_b ); + + Yvec = Zvec.crossProduct(Xvec); //Using original coordinate system +} + + +//================================================================================================= +//================================================================================== Main algorithm +//================================================================================================= + +/** + * WORKFLOW: 1 + * See workflow description on header + */ +bool LocalizerV2::find_z_axis_orient_vec(){ + + Field& fd = SField::getInstance(); + + const int goalNo = fd.list_landmarks_goalposts.size(); + + if(fd.non_collinear_ground_markers >= 3){ + fit_ground_plane(); + return true; + } + + /** + * At this point we have > 0 lines. Having 1 line is the most common option. + * But having 2 lines is also possible if at least one of them is too short to create 2 reference points. + * But those 2 lines can be both too short, which would not be ideal for the algorithms below. + * Steps: find largest line, check if it is large enough + */ + const Line6f* l = &fd.list_segments.front(); + if(fd.list_segments.size() > 1){ + for(const auto& ll: fd.list_segments){ + if(ll.length > l->length) l = ≪ + } + } + + if(l->length < 1){ //larger line is too short + stats_change_state(FAILzLine); + return false; + } + + if(goalNo == 0){ //Case e.g.: 1 corner and 1 line (or 2 short lines) + stats_change_state(FAILzNOgoal); + return false; + } + + + //------------------------------ Prepare variables for solution A & B + + // Get any crossbar point + Vector3f crossbar_pt; + auto& glist = fd.list_landmarks_goalposts; + if(goalNo == 1){ + crossbar_pt = glist.front().relPosCart; + }else{ + if(glist[0].absPos.x == glist[1].absPos.x){ + crossbar_pt = Vector3f::determineMidpoint( glist[0].relPosCart, glist[1].relPosCart); + }else{ + //extremely rare: there are other solutions when goalNo>2 but cost/benefit not worth it + crossbar_pt = glist.front().relPosCart; + } + } + + //------------------------------ Identify and apply solution A & B + + //Get line point closest to crossbar point + Vector3f p = l->linePointClosestToCartPoint( crossbar_pt ); + Vector3f possibleZvec = crossbar_pt - p; + float possibleZvecLength = possibleZvec.length(); + + if(fabsf(possibleZvecLength - 0.8) < 0.05){ //Solution A & B + Vector3f unit_zvec = possibleZvec / possibleZvecLength; + + // save as the new z axis orientation vector + prelimHeadToField.set(2,0,unit_zvec.x); + prelimHeadToField.set(2,1,unit_zvec.y); + prelimHeadToField.set(2,2,unit_zvec.z); + + find_z(unit_zvec); + return true; + } + + //------------------------------ Apply solution C + + Vector3f crossbar_left_vec, crossbar_midp; //this crossbar vector points left if seen from the midfield (this is important for the cross product) + + const auto& goal_mm = Field::list_8_landmarks::goal_mm; + const auto& goal_mp = Field::list_8_landmarks::goal_mp; + const auto& goal_pm = Field::list_8_landmarks::goal_pm; + const auto& goal_pp = Field::list_8_landmarks::goal_pp; + + if( goal_mm.visible && goal_mp.visible){ + crossbar_left_vec = goal_mm.relPosCart - goal_mp.relPosCart; + crossbar_midp = (goal_mm.relPosCart + goal_mp.relPosCart)/2; + }else if( goal_pp.visible && goal_pm.visible){ + crossbar_left_vec = goal_pp.relPosCart - goal_pm.relPosCart; + crossbar_midp = (goal_pp.relPosCart + goal_pm.relPosCart)/2; + } + + /** + * Check if angle between line and crossbar is between 45deg and 135deg + * 45deg < acos(line.crossbar / |line||crossbar|) < 135deg <=> + * | line.crossbar / |line||crossbar| | < cos(45deg) <=> + * | line.crossbar | < cos(45deg) * |line| * ~2.1 <=> + * | line.crossbar | < 1.485 * |line| + */ + Vector3f lvec = l->get_cart_vector(); + if( goalNo > 1 && fabsf(lvec.innerProduct(crossbar_left_vec)) < 1.485 * l->length ){ + Vector3f Zvec; + if(l->startc.dist(crossbar_midp) > l->endc.dist(crossbar_midp)){ + Zvec = lvec.crossProduct(crossbar_left_vec); + }else{ + Zvec = crossbar_left_vec.crossProduct(lvec); + } + Zvec = Zvec.normalize(); // get unit vector + + // save as the new z axis orientation vector + prelimHeadToField.set(2,0,Zvec.x); + prelimHeadToField.set(2,1,Zvec.y); + prelimHeadToField.set(2,2,Zvec.z); + + find_z(Zvec); + return true; + } + + + + stats_change_state(FAILz); + return false; //no solution was found +} + +/** + * Find the best fitting ground plane's normal vector using Singular Value Decomposition + * Also compute the agent's height based on the ground references' centroid + * Dependency: at least 3 ground references + */ +void LocalizerV2::fit_ground_plane(){ + + Field& fd = SField::getInstance(); + + const auto& ground_markers = fd.list_weighted_ground_markers; + const int ground_m_size = ground_markers.size(); + + //------------------------------------ Compute groundmarks plane (if we have at least 3 groundmarks) + + gsl_matrix *A, *V; + gsl_vector *S, *work; + + A = gsl_matrix_alloc(ground_m_size, 3); + V = gsl_matrix_alloc(3, 3); + S = gsl_vector_alloc(3); + work = gsl_vector_alloc(3); + + // Find the centroid + Vector3f centroid(0,0,0); + for(const auto& g : ground_markers){ // Insert all weighted groundmarks in matrix + centroid += g.relPosCart; + } + centroid /= (float)ground_m_size; + + // Insert all groundmarks in matrix after subtracting the centroid + for(int i=0; i 0 (replacing x=0, y=0, z=0) + * d < 0 + * + * However, if the agent is lying down, the optimized plane may be slightly above its head due to vision errors + * So, if we have a better reference point, such as a goal post, we use it + */ + + if(!fd.list_landmarks_goalposts.empty()){ //If there are visible goal posts + const Vector3f& aerialpt = fd.list_landmarks_goalposts.front().relPosCart; //random aerial point (goal post) + if( a*aerialpt.x + b*aerialpt.y + c*aerialpt.z < d ){ //the goalpost is on the negative side, so we invert the normal vector + a=-a; b=-b; c=-c; + } + }else{ //If there are no visible goal posts, we rely on the agent's head + if(d > 0){// the normal vectors points down, so we invert it (we ignore 'd' from this point forward) + a=-a; b=-b; c=-c; + } + } + + + // save the ground plane's normal vector as the new z axis orientation vector + prelimHeadToField.set(2,0,a); + prelimHeadToField.set(2,1,b); + prelimHeadToField.set(2,2,c); + + // compute the agent's height + float h = max( -centroid.x*a - centroid.y*b - centroid.z*c ,0.064); + prelimHeadToField.set(2,3, h ); + + //Set public independent coordinate z (Not a problem: may be out of sync with transf matrix) + last_z = final_z; + final_z = h; + _is_head_z_uptodate = true; + +} + +/** + * Compute translation in z (height) + * Note: Apparently there's no real benefit in involving goalposts (weighted or not), only when the + * visible objects are below 5/6, and even then the difference is minimal. + */ +void LocalizerV2::find_z(const Vector3f& Zvec){ + + Field& fd = SField::getInstance(); + + Vector3f zsum; + for(const auto& g: fd.list_weighted_ground_markers){ + zsum += g.relPosCart; + } + + //Minimum height: 0.064m + float z = max( -(zsum/fd.list_weighted_ground_markers.size()).innerProduct(Zvec) ,0.064f); + + prelimHeadToField.set( 2,3,z ); + + //Set public independent coordinate z (Not a problem: may be out of sync with transf matrix) + last_z = final_z; + final_z = z; + _is_head_z_uptodate = true; + +} + + +/** + * Computes mapping error using distance probabilities + * @return negative log of ["normalized" probability = (p1*p2*p3*...*pn)^(1/n)] + */ +double LocalizerV2::map_error_logprob(const gsl_vector *v, void *params){ + + float angle; + Field& fd = SField::getInstance(); + + //Get angle from optimization vector, or from params (as a constant) + if(v->size == 3){ + angle = gsl_vector_get(v,2); + }else{ + angle = *(float *)params; + } + + Matrix4D& transfMat = SLocalizerV2::getInstance().prelimHeadToField; + Vector3f Zvec(transfMat.get(2,0), transfMat.get(2,1), transfMat.get(2,2)); + + Vector3f Xvec, Yvec; + fast_compute_XYvec_from_Zvec(Zvec, angle, Xvec, Yvec ); + + //These are the transformation coefficients that are being optimized + transfMat.set(0,0,Xvec.x); + transfMat.set(0,1,Xvec.y); + transfMat.set(0,2,Xvec.z); + transfMat.set(0,3,gsl_vector_get(v, 0)); + transfMat.set(1,0,Yvec.x); + transfMat.set(1,1,Yvec.y); + transfMat.set(1,2,Yvec.z); + transfMat.set(1,3,gsl_vector_get(v, 1)); + + Matrix4D inverseTransMat = transfMat.inverse_tranformation_matrix(); + + + double total_logprob = 0; + int total_err_cnt =0; + + //Add log probability of unknown markers (with known corresponding field segment) + for(const auto& u : fd.list_unknown_markers){ + + + //We know the closest field segment, so we can bring it to the agent's frame + Vector3f rel_field_s_start = inverseTransMat * u.fieldSeg->point[0]->get_vector(); + Vector3f rel_field_s_end = inverseTransMat * u.fieldSeg->point[1]->get_vector(); + + Line6f rel_field_s(rel_field_s_start, rel_field_s_end, u.fieldSeg->length); //Convert to Line6f + + Vector3f closest_polar_pt = rel_field_s.segmentPointClosestToCartPoint(u.relPosCart).toPolar(); + + total_logprob += FieldNoise::log_prob_r(closest_polar_pt.x, u.relPosPolar.x); + total_logprob += FieldNoise::log_prob_h(closest_polar_pt.y, u.relPosPolar.y); + total_logprob += FieldNoise::log_prob_v(closest_polar_pt.z, u.relPosPolar.z); + total_err_cnt++; + + } + + //Add log probability of known markers + for(const auto& k : fd.list_known_markers){ + + //Bring marker to agent's frame + Vector3f rel_k = (inverseTransMat * k.absPos.get_vector()).toPolar(); + + total_logprob += FieldNoise::log_prob_r(rel_k.x, k.relPosPolar.x); + total_logprob += FieldNoise::log_prob_h(rel_k.y, k.relPosPolar.y); + total_logprob += FieldNoise::log_prob_v(rel_k.z, k.relPosPolar.z); + total_err_cnt++; + + } + + //return log of "normalized" probability = (p1*p2*p3*...*pn)^(1/n) + //negative because the optimization method minimizes the loss function + double logNormProb = -total_logprob / total_err_cnt; + + if(!gsl_finite(logNormProb)) return 1e6; //fix + + return logNormProb; + +} + + + +/** + * Computes mapping error using 2d euclidian distances + * @return average distance + */ +double LocalizerV2::map_error_2d(const gsl_vector *v, void *params){ + + float angle; + Field& fd = SField::getInstance(); + + //Get angle from optimization vector, or from params (as a constant) + if(v->size == 3){ + angle = gsl_vector_get(v,2); + }else{ + angle = *(float *)params; + } + + Matrix4D& transfMat = SLocalizerV2::getInstance().prelimHeadToField; + Vector3f Zvec(transfMat.get(2,0), transfMat.get(2,1), transfMat.get(2,2)); + + Vector3f Xvec, Yvec; + fast_compute_XYvec_from_Zvec(Zvec, angle, Xvec, Yvec ); + + + //These are the transformation coefficients that are being optimized + transfMat.set(0,0,Xvec.x); + transfMat.set(0,1,Xvec.y); + transfMat.set(0,2,Xvec.z); + transfMat.set(0,3,gsl_vector_get(v, 0)); + transfMat.set(1,0,Yvec.x); + transfMat.set(1,1,Yvec.y); + transfMat.set(1,2,Yvec.z); + transfMat.set(1,3,gsl_vector_get(v, 1)); + + + float total_err = 0; + int total_err_cnt =0; + for(const Line6f& l : fd.list_segments){ + + //Compute line absolute coordinates according to current transformation + Vector3f ls = transfMat * l.startc; + Vector3f le = transfMat * l.endc; + + //Compute line angle and establish a tolerance + float l_angle = 0; + float l_angle_tolerance = 10; //default full tolerance (no point in being larger than pi/2 but no harm either) + + if(l.length > 0.8){ + //This is the easy case: find the angle and establish a small tolerance (which allows some visual rotation attempts) + l_angle = atan2f(le.y - ls.y, le.x - ls.x); + if(l_angle < 0) { l_angle += 3.14159265f; } //this is a line, not a vector, so positive angles are enough + l_angle_tolerance = 0.35f; //20 degrees + + } else if(fd.list_segments.size() <= 3) { + //It gets to a point where the cost/benefit is not very inviting. If there are many lines (>3), + //the small ones are not as decisive for the mapping error. Otherwise, we proceed: + + //If the small line is touching a big line, they have different orientations (it's a characteristic from the field lines) + + for(const Line6f& lbig : fd.list_segments){ + if(lbig.length < 2 || &lbig == &l ) continue; //check if line is big and different from current + + if(lbig.segmentDistToSegment(l)<0.5){ + //this would only generate false positives with the halfway line and 4 ring lines (if enough vision error) + //but even then, their orientation would be very different, so the method still holds + + //---------- get angle perpendicular to bigline (that is either the small line's angle, or at least close enough) + + //get bigline angle + Vector3f lbigs = transfMat * lbig.startc; + Vector3f lbige = transfMat * lbig.endc; + l_angle = atan2f(lbige.y - lbigs.y, lbige.x - lbigs.x); + + // add 90deg while keeping the angle between 0-180deg (same logic used when l.length > 0.8) + if (l_angle < -1.57079632f){ l_angle += 4.71238898f; } //Q3 -> add pi*3/2 + else if(l_angle < 0 ){ l_angle += 1.57079632f; } //Q4 -> add pi/2 + else if(l_angle < 1.57079632f ){ l_angle += 1.57079632f; } //Q1 -> add pi/2 + else { l_angle -= 1.57079632f; } //Q2 -> subtract pi/2 + + //This large tolerance means that this small line can be matched with almost everything except perpendicular lines + l_angle_tolerance = 1.22f; //70 deg tolerance + break; //end search for close big lines + } + } + } + + + //this default error of 1e6f is applied when there is no match (which means the transf. matrix's Xvec/Yvec are wrong) + float min_err = 1e6f; + for(const auto& s : Field::cFieldLineSegments::list){ //find distance to closest field line + + //Skip field line if seen line is substantially larger + if( l.length > (s.length + 0.7) ){ continue; } + + //Skip field line if orientation does not match + float angle_difference = fabsf(l_angle - s.angle); + if(angle_difference > 1.57079632f) angle_difference = 3.14159265f - angle_difference; + if(angle_difference > l_angle_tolerance) continue; + + //Error is the sum of the distance of a single line segment to both endpoints of seen line + float err = Field::fieldLineSegmentDistToCart2DPoint(s,ls.to2d()); + if(err < min_err) err += Field::fieldLineSegmentDistToCart2DPoint(s,le.to2d()); + + if(err < min_err) min_err = err; + } + + total_err += min_err; + total_err_cnt+=2; //a line has 2 points, double the weight of a single landmark + + } + + + for(const Field::sMarker& m : fd.list_landmarks){ + + Vector3f lpt = transfMat * m.relPosCart; //compute absolute coordinates according to current transformation + + float err = lpt.to2d().getDistanceTo(Vector(m.absPos.x,m.absPos.y)); + total_err += err > 0.5 ? err * 100 : err; + total_err_cnt++; + + } + + double avg_error = total_err / total_err_cnt; + + if(!gsl_finite(avg_error)) return 1e6; //fix + + return avg_error; //return average error +} + + + + +/** + * Apply fine tuning directly on the prelimHeadToField matrix + * 1st - improve map fitting + * 2nd - identify line segments and their endpoints + * 3rd - fine tune again using known markers + * @param initial_angle initial angle of Xvec around Zvec + * @param initial_x initial translation in x + * @param initial_y initial translation in y + */ +bool LocalizerV2::fine_tune(float initial_angle, float initial_x, float initial_y){ + + Field& fd = SField::getInstance(); + + //Statistics before fine tune + counter_fineTune += stats_sample_position_error(Vector3f(initial_x,initial_y,prelimHeadToField.get(11)), world.my_cheat_abs_cart_pos, errorSum_fineTune_before); + + //Fine tune, changing the initial parameters directly + if(!fine_tune_aux(initial_angle, initial_x, initial_y, false)) return false; + + //Statistics for 1st fine tune + stats_sample_position_error(Vector3f(initial_x,initial_y,prelimHeadToField.get(11)), world.my_cheat_abs_cart_pos, errorSum_fineTune_euclidianDist); + + //Identify new markers + fd.update_from_transformation(prelimHeadToField); + + //Probabilistic fine tune + fine_tune_aux(initial_angle, initial_x, initial_y, true); + + //Statistics for 2nd fine tune + stats_sample_position_error(prelimHeadToField.toVector3f(), world.my_cheat_abs_cart_pos, errorSum_fineTune_probabilistic); + + //Update unknown markers absolute position based on refined transformation matrix + fd.update_unknown_markers(prelimHeadToField); + + return true; +} + + +/** + * Apply fine tuning: + * - directly on: initial_angle, initial_x, initial_y (if use_probabilities == false) + * - directly on the prelimHeadToField matrix using probabilities (if use_probabilities == true) + * @param initial_angle initial angle of Xvec around Zvec + * @param initial_x initial translation in x + * @param initial_y initial translation in y + */ +bool LocalizerV2::fine_tune_aux(float &initial_angle, float &initial_x, float &initial_y, bool use_probabilities){ + + int status, iter=0; + gsl_vector* x = create_gsl_vector<3>({initial_x, initial_y, initial_angle}); // Initial transformation + gsl_vector* ss = create_gsl_vector<3>({0.02, 0.02, 0.03}); // Set initial step sizes + gsl_multimin_function minex_func = {map_error_2d, 3, nullptr}; // error func, variables no., params + if(use_probabilities) minex_func.f = map_error_logprob; // probablity-based error function + + const gsl_multimin_fminimizer_type *T = gsl_multimin_fminimizer_nmsimplex2; // algorithm type + gsl_multimin_fminimizer *s = gsl_multimin_fminimizer_alloc (T, 3); // allocate workspace + gsl_multimin_fminimizer_set (s, &minex_func, x, ss); // set workspace + + float best_x, best_y, best_ang; + + + do{ + iter++; + status = gsl_multimin_fminimizer_iterate(s); + + //*s holds the best solution, not the last solution + best_x = gsl_vector_get (s->x, 0); + best_y = gsl_vector_get (s->x, 1); + best_ang = gsl_vector_get (s->x, 2); + + if (status) break; + + double size = gsl_multimin_fminimizer_size (s); //minimizer-specific characteristic size + status = gsl_multimin_test_size (size, 1e-3); //This size can be used as a stopping criteria, as the simplex contracts itself near the minimum + + } + while ((status == GSL_CONTINUE || use_probabilities) && iter < 40); + + float best_map_error = s->fval; + + gsl_vector_free(x); + gsl_vector_free(ss); + gsl_multimin_fminimizer_free (s); + + if(!use_probabilities){ + if(best_map_error > 0.10){ + stats_change_state(FAILtune); + return false; + }else{ + initial_angle = best_ang; + initial_x = best_x; + initial_y = best_y; + return true; + } + } + + /** + * At this point, use_probabilities is true + * Note: The transformations are directly tested on prelimHeadToField but it currently + * holds the last test, so we set it manually here to the best found solution + */ + + //Convert angle into Xvec and Yvec + Vector3f Zvec(prelimHeadToField.get(2,0), prelimHeadToField.get(2,1), prelimHeadToField.get(2,2)); + Vector3f Xvec, Yvec; + fast_compute_XYvec_from_Zvec(Zvec, best_ang, Xvec, Yvec ); + + prelimHeadToField.set(0,0, Xvec.x); + prelimHeadToField.set(0,1, Xvec.y); + prelimHeadToField.set(0,2, Xvec.z); + prelimHeadToField.set(0,3, best_x); + prelimHeadToField.set(1,0, Yvec.x); + prelimHeadToField.set(1,1, Yvec.y); + prelimHeadToField.set(1,2, Yvec.z); + prelimHeadToField.set(1,3, best_y); + + return true; +} + +/** + * Find XY translation/rotation + * A unique solution is guaranteed if Zvec points in the right direction + * Requirement: 2 visible landmarks + */ +bool LocalizerV2::find_xy(){ + + Field& fd = SField::getInstance(); + + Vector3f Zvec(prelimHeadToField.get(2,0), prelimHeadToField.get(2,1), prelimHeadToField.get(2,2)); + + Field::sMarker *m1 = nullptr, *m2 = nullptr; + + //Get as many corners as possible + if(fd.list_landmarks_corners.size()>1){ + m1 = &fd.list_landmarks_corners[0]; + m2 = &fd.list_landmarks_corners[1]; + }else if(fd.list_landmarks_corners.size()==1){ + m1 = &fd.list_landmarks_corners[0]; + m2 = &fd.list_landmarks_goalposts[0]; + }else{ + m1 = &fd.list_landmarks_goalposts[0]; + m2 = &fd.list_landmarks_goalposts[1]; + } + + Vector3f realVec(m2->absPos.x - m1->absPos.x, m2->absPos.y - m1->absPos.y, m2->absPos.z - m1->absPos.z); + float real_angle = atan2f(realVec.y, realVec.x); //angle of real vector + + Vector3f seenVec(m2->relPosCart - m1->relPosCart); + Vector3f rotated_abs_vec = fast_rotate_around_ground_axis(seenVec, Zvec); + float seen_angle = atan2f(rotated_abs_vec.y, rotated_abs_vec.x); //angle of real vector + + float AgentAngle = real_angle - seen_angle; //no normalization is needed + + + Vector3f Xvec, Yvec; + fast_compute_XYvec_from_Zvec(Zvec, AgentAngle, Xvec, Yvec ); + + /** + * Let m be a landmark, rel:(mx,my,mz), abs:(mabsx, mabsy, mabsz) + * XvecX*mx + XvecY*my + XvecZ*mz + AgentX = mabsx + * AgentX = mabsx - (XvecX*mx + XvecY*my + XvecZ*mz) + * AgentX = mabsx - (XvecX . m) + * + * Generalizing for N estimates: + * AgentX = sum( mabsx - (XvecX . m) )/N + */ + float initial_x = 0, initial_y = 0; + for(const Field::sMarker& m : fd.list_landmarks){ + initial_x += m.absPos.x - Xvec.innerProduct(m.relPosCart); + initial_y += m.absPos.y - Yvec.innerProduct(m.relPosCart); + } + + initial_x /= fd.list_landmarks.size(); + initial_y /= fd.list_landmarks.size(); + + + return fine_tune(AgentAngle, initial_x, initial_y); + +} + +bool LocalizerV2::guess_xy(){ + Field& fd = SField::getInstance(); + + //Get Zvec from previous steps + Vector3f Zvec(prelimHeadToField.get(2,0), prelimHeadToField.get(2,1), prelimHeadToField.get(2,2)); + Vector last_known_position(head_position.x, head_position.y); + + //------------------------------------------------------------ Get longest line and use it as X or Y vector + + const Line6f* longestLine = &fd.list_segments.front(); + for(const Line6f& l : fd.list_segments){ + if(l.length > longestLine->length) longestLine = &l; + } + + if(longestLine->length < 1.6){ + stats_change_state(FAILguessLine); + return false; //largest line is too short, it could be mistaken for a ring line + } + + //Rotate line to real ground plane, where it loses the 3rd dimension + Vector3f longestLineVec = longestLine->endc - longestLine->startc; + Vector3f rotated_abs_line = fast_rotate_around_ground_axis(longestLineVec, Zvec); + + //The line can be aligned with X or Y, positively or negatively (these angles don't need to be normalized) + float fixed_angle[4]; + fixed_angle[0] = -atan2f(rotated_abs_line.y,rotated_abs_line.x); //if longestLineVec is Xvec + fixed_angle[1] = fixed_angle[0] + 3.14159265f; //if longestLineVec is -Xvec + fixed_angle[2] = fixed_angle[0] + 1.57079633f; //if longestLineVec is Yvec + fixed_angle[3] = fixed_angle[0] - 1.57079633f; //if longestLineVec is -Yvec + + //------------------------------------------------------------ Get initial translation + + //if we see 1 landmark, we use it, if not, we get the last position + + float initial_x[4], initial_y[4]; + bool noLandmarks = fd.list_landmarks.empty(); + + if(noLandmarks){ + + for(int i=0; i<4; i++){ + initial_x[i] = last_known_position.x; + initial_y[i] = last_known_position.y; + } + + } else { + + Vector3f Xvec = longestLineVec / longestLine->length; + Vector3f Yvec(Zvec.crossProduct(Xvec)); + + /** + * Let m be a landmark, rel:(mx,my,mz), abs:(mabsx, mabsy, mabsz) + * XvecX*mx + XvecY*my + XvecZ*mz + AgentX = mabsx + * AgentX = mabsx - (XvecX*mx + XvecY*my + XvecZ*mz) + * AgentX = mabsx - (XvecX . m) + */ + + const Field::sMarker& m = fd.list_landmarks.front(); + const float x_aux = Xvec.innerProduct(m.relPosCart); + const float y_aux = Yvec.innerProduct(m.relPosCart); + + initial_x[0] = m.absPos.x - x_aux; + initial_y[0] = m.absPos.y - y_aux; + initial_x[1] = m.absPos.x + x_aux; //2nd version: X is inverted + initial_y[1] = m.absPos.y + y_aux; //2nd version: Y is inverted + initial_x[2] = m.absPos.x + y_aux; //3rd version: X is inverted Y + initial_y[2] = m.absPos.y - x_aux; //3rd version: Y is X + initial_x[3] = m.absPos.x - y_aux; //4th version: X is Y + initial_y[3] = m.absPos.y + x_aux; //4th version: Y is inverted X + + } + + + //------------------------------------------------------------ Optimize XY rotation for each possible orientation + + + const gsl_multimin_fminimizer_type *T = gsl_multimin_fminimizer_nmsimplex2; + gsl_multimin_fminimizer *s[4] = {nullptr,nullptr,nullptr,nullptr}; + gsl_vector *ss[4], *x[4]; + gsl_multimin_function minex_func[4]; + + size_t iter = 0; + int status; + double size; + + for(int i=0; i<4; i++){ + x[i] = create_gsl_vector<2>({initial_x[i], initial_y[i]}); // Initial transformation + ss[i] = create_gsl_vector<2>({1, 1}); //Set initial step sizes to 1 + + /* Initialize method */ + minex_func[i].n = 2; + minex_func[i].f = map_error_2d; + minex_func[i].params = &fixed_angle[i]; + + s[i] = gsl_multimin_fminimizer_alloc (T, 2); + gsl_multimin_fminimizer_set (s[i], &minex_func[i], x[i], ss[i]); + } + + /* start iterating */ + bool running[4] = {true,true,true,true}; + float current_error[4] = {1e6,1e6,1e6,1e6}; + float lowest_error = 1e6; + Vector best_xy[4]; + const int maximum_iterations = 50; + bool plausible_solution[4] = {false,false,false,false}; + do{ + iter++; + for(int i=0; i<4; i++){ + if(!running[i]) continue; + + status = gsl_multimin_fminimizer_iterate(s[i]); + + current_error[i] = s[i]->fval; + if(current_error[i] < lowest_error) lowest_error = current_error[i]; + + // Possible errors: + // GSL_ERROR ("incompatible size of x", GSL_EINVAL); This should only be a concern during code design + // GSL_ERROR ("contraction failed", GSL_EFAILED); Evaluation function produced non finite value + if (status) { + running[i]=false; //This is not a valid solution + continue; + } + + size = gsl_multimin_fminimizer_size (s[i]); //minimizer-specific characteristic size + status = gsl_multimin_test_size (size, 1e-2); //This size can be used as a stopping criteria, as the simplex contracts itself near the minimum + + if(status != GSL_CONTINUE || (lowest_error * 50 < current_error[i])) { //finished or aborted + best_xy[i].x = gsl_vector_get (s[i]->x, 0); + best_xy[i].y = gsl_vector_get (s[i]->x, 1); + running[i]=false; + plausible_solution[i]=(status == GSL_SUCCESS); //only valid if it converged to local minimum + continue; + } + + + } + + + } while (iter < maximum_iterations && (running[0] || running[1] || running[2] || running[3])); + + for(int i=0; i<4; i++){ + gsl_vector_free(x[i]); + gsl_vector_free(ss[i]); + gsl_multimin_fminimizer_free (s[i]); + } + + + //At this point, a solution is plausible if it converged to a local minimum + //So, we apply the remaining criteria for plausiblity + int plausible_count = 0; + int last_i; + for(int i=0; i<4; i++){ + if(!plausible_solution[i]) continue; + bool isDistanceOk = (!noLandmarks) || last_known_position.getDistanceTo(best_xy[i]) < 0.5; // distance to last known position + if(current_error[i] < 0.12 && isDistanceOk){ // mapping error + plausible_count++; + last_i = i; + } + } + + // If there is 1 landmark, and multiple options, the distance to last known pos is now used to eliminate candidates + if(!noLandmarks && plausible_count>1){ + plausible_count = 0; + for(int i=0; i<4; i++){ + if(plausible_solution[i] && last_known_position.getDistanceTo(best_xy[i]) < 0.5){ // distance to last known position + plausible_count++; + last_i = i; + } + } + } + + //Check if best solution is good if all others are not even plausible + if(plausible_count==0){ + stats_change_state(FAILguessNone); + return false; + }else if(plausible_count>1){ + stats_change_state(FAILguessMany); + return false; + }else if(current_error[last_i] > 0.06 || (noLandmarks && last_known_position.getDistanceTo(best_xy[last_i]) > 0.3)){ // mapping error / distance to last known position + stats_change_state(FAILguessTest); + return false; + } + + return fine_tune(fixed_angle[last_i],best_xy[last_i].x, best_xy[last_i].y); + +} + + + +/** + * Called to update every public variable (rotation + translation) + */ +void LocalizerV2::commit_everything(){ + + final_headTofieldTransform = prelimHeadToField; //Full transformation (relative to absolute) + + final_headTofieldTransform.inverse_tranformation_matrix( final_fieldToheadTransform ); //Full transformation (absolute to relative) + + for(int i=0; i<3; i++){ + + //Rotation (relative to absolute) + final_headTofieldRotate.set(i ,final_headTofieldTransform.get(i )); //Copy rotation line 1 + final_headTofieldRotate.set(i+4,final_headTofieldTransform.get(i+4)); //Copy rotation line 2 + final_headTofieldRotate.set(i+8,final_headTofieldTransform.get(i+8)); //Copy rotation line 3 + + //Rotation (absolute to relative) + final_fieldToheadRotate.set(i ,final_fieldToheadTransform.get(i )); //Copy rotation line 1 + final_fieldToheadRotate.set(i+4,final_fieldToheadTransform.get(i+4)); //Copy rotation line 2 + final_fieldToheadRotate.set(i+8,final_fieldToheadTransform.get(i+8)); //Copy rotation line 3 + } + + final_translation = final_headTofieldTransform.toVector3f(); + + _is_uptodate = true; + + _steps_since_last_update = 0; + + //Add current 3D position to history + position_history[position_history_ptr++] = final_translation; + if(position_history_ptr >= position_history.size()) position_history_ptr=0; + +} + + +Vector3f LocalizerV2::relativeToAbsoluteCoordinates(const Vector3f relativeCoordinates) const{ + return headTofieldTransform * relativeCoordinates; +} + +Vector3f LocalizerV2::absoluteToRelativeCoordinates(const Vector3f absoluteCoordinates) const{ + return fieldToheadTransform * absoluteCoordinates; +} + + + +/** + * Reset preliminary matrix with a constant for the first 3 rows + */ +void LocalizerV2::prelim_reset(){ + //Since it was initialized as identity matrix we never need to change the last row + for(int i=0; i<12; i++){ + prelimHeadToField.set(i,9999); //flag unchanged cells with a constant + } +} + +//================================================================================================= +//=============================================================================== useful statistics +//================================================================================================= + +Vector3f LocalizerV2::get_velocity(unsigned int n) const{ + //assert(n > 0 && n < position_history.size() && "LocalizerV2::get_velocity(unsigned int n) -> n must be between 1 and 9!"); + + int l = position_history.size() - 1; + + Vector3f current_pos = position_history[(position_history_ptr + l) % position_history.size()]; + Vector3f last_pos = position_history[(position_history_ptr + l - n) % position_history.size()]; + + return current_pos - last_pos; +} + +//================================================================================================= +//================================================================================ debug statistics +//================================================================================================= + + +void LocalizerV2::print_report() const{ + + if(counter_fineTune == 0){ + cout << "LocalizerV2 Report - Check if the server is providing cheat data.\n"; + return; + } + + if(counter_fineTune < 2) return; //otherwise, c-1=0 + const int &c = counter_fineTune; + const int &cb = counter_ball; + const int c1 = c-1; + const int cb1 = cb-1; + + const double* ptr = errorSum_fineTune_before; + float e1_2d_var = (ptr[4] - (ptr[3]*ptr[3]) / c) / c1; + float e1_3d_var = (ptr[6] - (ptr[5]*ptr[5]) / c) / c1; + float e1[] = { ptr[3]/c, sqrt(e1_2d_var), ptr[5]/c, sqrt(e1_3d_var), ptr[0]/c, ptr[1]/c, ptr[2]/c }; + + ptr = errorSum_fineTune_euclidianDist; + float e2_2d_var = (ptr[4] - (ptr[3]*ptr[3]) / c) / c1; + float e2_3d_var = (ptr[6] - (ptr[5]*ptr[5]) / c) / c1; + float e2[] = { ptr[3]/c, sqrt(e2_2d_var), ptr[5]/c, sqrt(e2_3d_var), ptr[0]/c, ptr[1]/c, ptr[2]/c }; + + ptr = errorSum_fineTune_probabilistic; + float e3_2d_var = (ptr[4] - (ptr[3]*ptr[3]) / c) / c1; + float e3_3d_var = (ptr[6] - (ptr[5]*ptr[5]) / c) / c1; + float e3[] = { ptr[3]/c, sqrt(e3_2d_var), ptr[5]/c, sqrt(e3_3d_var), ptr[0]/c, ptr[1]/c, ptr[2]/c }; + + ptr = errorSum_ball; + float e4_2d_var=0, e4_3d_var=0; + if(cb1 > 0){ + e4_2d_var = (ptr[4] - (ptr[3]*ptr[3]) / cb) / cb1; + e4_3d_var = (ptr[6] - (ptr[5]*ptr[5]) / cb) / cb1; + } + float e4[] = { ptr[3]/cb, sqrt(e4_2d_var), ptr[5]/cb, sqrt(e4_3d_var), ptr[0]/cb, ptr[1]/cb, ptr[2]/cb }; + + const int* st = state_counter; + printf("---------------------------------- LocalizerV2 Report ----------------------------------\n"); + printf("SAMPLING STAGE 2D-MAE 2D-STD 3D-MAE 3D-STD x-MBE y-MBE z-MBE\n"); + printf("Before fine-tune: %.4f %.4f %.4f %.4f %7.4f %7.4f %7.4f\n", e1[0],e1[1],e1[2],e1[3],e1[4],e1[5],e1[6]); + printf("After Euclidian dist. fit: %.4f %.4f %.4f %.4f %7.4f %7.4f %7.4f\n", e2[0],e2[1],e2[2],e2[3],e2[4],e2[5],e2[6]); + printf("After probabilistic fit: %.4f %.4f %.4f %.4f %7.4f %7.4f %7.4f\n", e3[0],e3[1],e3[2],e3[3],e3[4],e3[5],e3[6]); + printf("Ball: %.4f %.4f %.4f %.4f %7.4f %7.4f %7.4f\n\n", e4[0],e4[1],e4[2],e4[3],e4[4],e4[5],e4[6]); + printf("* MBE(Mean Bias Error) MAE(Mean Abs Error) STD(Standard Deviation)\n"); + printf("* Note: the cheat positions should be active in server (preferably with >2 decimal places)\n\n"); + printf("------------------LocalizerV2::run calls analysis:\n"); + printf("- Total: %i \n", st[RUNNING]); + printf("- Successful: %i \n", st[DONE]); + printf("- Blind agent: %i \n", st[BLIND]); + printf("- Almost blind: %i \n", st[MINFAIL] + st[FAILzNOgoal] + st[FAILzLine] + st[FAILz]); + printf("- Guess location fail: %i \n", st[FAILguessLine] + st[FAILguessNone] + st[FAILguessMany] + st[FAILguessTest]); + printf("--- Lines too short: %i \n", st[FAILguessLine]); + printf("--- No solution: %i \n", st[FAILguessNone]); + printf("--- >1 solution: %i \n", st[FAILguessMany]); + printf("--- Weak solution: %i \n", st[FAILguessTest]); + printf("- Eucl. tune fail: %i \n", st[FAILtune]); //Euclidian distance tune error above 6cm + printf("----------------------------------------------------------------------------------------\n"); + +} + +void LocalizerV2::stats_reset(){ + + counter_fineTune = 0; + for(int i=0; i= 3 noncollinear ground references (z=0) + * ASSUMPTION: the ground references are not collinear. Why? + * If we see 2 lines their endpoints are never collinear. + * If we see one and we are on top of it, the feet contact points can cause collinearity but it is very rare. + * SOLUTION: Find the best fitting ground plane's normal vector using Singular Value Decomposition + * + * 1.2. there are < 3 noncollinear ground references (z=0) + * + * Possible combinations: + * If there is 1 corner flag, either we have >= 3 ground references, or it is impossible. + * So, below, we assume there are 0 corner flags. + * + * | 0 lines + 0/1/2 feet | 1 line + 0 feet | + * -------------|------------------------|------------------| + * 0 goalposts | ----- | ----- | (Only 1 line: there is no way of identifying it) + * 1 goalpost | ----- | A,C | (1 goalpost and 0/1/2 feet: infinite solutions) + * 2 goalposts | * | B,C | + * + * + * If it sees 1 or 2 goalposts and only 1 line, we assume for A & B that it is the endline (aka goal line) + * + * SOLUTIONS: + * 1.2.A. IF IT IS THE GOALLINE. Find the line's nearest point (p) to the goalpost (g), Zvec = (g-p) / |Zvec| + * 1.2.B. IF IT IS THE GOALLINE. Find the line's nearest point (p) to the goalposts (g1,g2) midpoint (m), Zvec = (m-p) / |Zvec| + * (This solution is more accurate than using only 1 goalpost. Even m is more accurate, on average, than g1 or g2.) + * 1.2.C. IF IT IS NOT THE GOALLINE. There are 3 options: + * I - There are 2 goalposts (crossbar line) and an orthogonal line: + * Zvec = crossbar x line (or) line x crossbar (depending of the direction of both vectors) + * II - Other situation if the z translation coordinate was externally provided through machine learning: + * Find any horizontal line (e.g. line between 2 goalposts, or ground line) + * Let M be any mark with known absolute z, and let Z be the externally provided z coordinate: + * Find Zvec such that (HorLine.Zvec=0) and (Zvec.Mrel=Mabsz-Z) + * III - If z was not provided: + * Skip to last step. + * 1.2.*. This scenario was tested and it is not valid. In certain body positions there are two solutions, and even though + * one is correct and generally yields lower error, the other one is a local optimum outside the field. One could + * exclude the out-of-field solution with some mildly expensive modifications to the optimization's error function, + * but the out-of-field scenario is not unrealistic, so this is not the way. Adding an external z source could help + * increasing the error of the wrong local optimum, but it may not be enough. Another shortcoming of this scenario is + * when we see the goalposts from the opposite goal, creating large visual error. + * + * 1.3. impossible / not implemented: in this case skip to last step + * + * ----------------------------------------------------------------------------------- + * 2. Compute z: + * + * Here's what we know about the transformation matrix so far: + * | - | - | - | - | + * | - | - | - | - | + * | zx | zy | zz | ? | We want to know the translation in z + * | 0 | 0 | 0 | 1 | + * + * Given a random point (p) with known relative coordinates and known absolute z coordinate, + * we can find the translation in z: + * p.relx * zx + p.rely * zy + p.relz * zz + ? = p.absz + * + * If we do this for every point, we can then average z + * + * ----------------------------------------------------------------------------------- + * 3. Compute a rough estimate for entire transformation (2 first rows): + * + * Solution quality for possible combinations: + * + * short line (length < 0.5m) *hard to detect orientation, *generated displacement error is insuficient for optimization + * long line (length >= 0.5m) + * + * | 0 landmarks | 1 goalpost | 1 corner | >= 2 landmarks | + * -----------------|---------------|--------------|------------|----------------| + * 0 long lines | --- | --- | --- | A | + * 1 long line | --- | B+ | B | A | + * 2 long lines | B | B+ | B++ | A | + * + * SOLUTIONS: + * A - the solution is unique + * STEPS: + * - Compute the X-axis and Y-axis orientation from 2 landmarks + * - Average the translation for every visible landmark + * - Fine-tune XY translation/rotation + * B - there is more than 1 solution, so we use the last known position as reference + * Minimum Requirements: + * - longest line must be >1.6m so that we can extract the orientation (hor/ver) while not being mistaken for a ring line + * - there is exactly 1 plausible solution + * Notes: + * B+ (the solution is rarely unique) + * B++ (the solution is virtually unique but cannot be computed with the algorithm for A scenarios) + * STEPS: + * - Find 4 possible orientations based on the longest line (which should be either aligned with X or Y) + * - Determine reasonable initial translation: + * - If the agent sees 1 landmark: compute XY translation for each of the 4 orientations based on that 1 landmark + * - If the agent sees 0 landmarks: use last known position + * Note: Why not use always last known position if that is a criterion in the end? + * Because in this stage it would only delay the optimization. + * - Optimize the X/Y translation for every possible orientation + * - Perform quality assessment + * Plausible solution if: + * - Optimization converged to local minimum + * - Distance to last known position <50cm (applicable if no visible landmarks) + * - Mapping error <0.12m/point + * - Given the agent's FOV, inverse mapping error <0.2m/point (disabled in V2) + * NOTE: If there is 1 landmark, plausibility is defined by mapping errors, not distance to last known pos. So if + * one guess has the only acceptable mapping error, but is the farthest from previous position, it is still chosen. + * However, if >1 guess has acceptable mapping error, the 0.5m threshold is used to eliminate candidates. + * Likely if: + * - Plausible + * - Distance to last known position <30cm (applicable if no visible landmarks) + * - Mapping error <0.06m/point + * - Given the agent's FOV, inverse mapping error <0.1m/point (not currently active) + * - Choose likely solution if all others are not even plausible + * - Fine-tune XY translation/rotation + * + * ----------------------------------------------------------------------------------- + * 4. Identify visible elements and perform 2nd fine tune based on distance probabilites + * + * ----------------------------------------------------------------------------------- + * Last step. Analyze preliminary transformation matrix to update final matrices + * + * For the reasons stated in the beginning (see warning), if the preliminary matrix was not entirely set, the + * actual transformation matrix will not be changed. But the head position will always reflect the latest changes. + * + * + * =================================================================================== + * LOCALIZATION BASED ON PROBABILITY DENSITIES + * =================================================================================== + * ================================PROBABILITY DENSITY================================ + * + * For 1 distance measurement from RCSSSERVER3D: + * + * Error E = d/100 * A~N(0,0.0965^2) + B~U(-0.005,0.005) + * PDF[d/100 * A](w) = PDF[N(0,(d/100 * 0.0965)^2)](w) + * PDF[E](w) = PDF[N(0,(d/100 * 0.0965)^2)](w) convoluted with PDF[U(-0.005,0.005)](w) + * + * where d is the distance from a given [p]oint (px,py,pz) to the [o]bject (ox,oy,oz) + * and w is the [m]easurement error: w = d-measurement = sqrt((px-ox)^2+(py-oy)^2+(pz-oz)^2) - measurement + * + * PDF[E](w) -> PDF[E](p,o,m) + * --------------------------------------------------------------- + * For n independent measurements: + * + * PDF[En](p,on,mn) = PDF[E1](p,o1,m1) * PDF[E2](p,o2,m2) * PDF[E3](p,o3,m3) * ... + * --------------------------------------------------------------- + * Adding z estimation: + * + * PDF[zE](wz) = PDF[N(mean,std^2)](wz) + * where wz is the zError = estz - pz + * + * PDF[zE](wz) -> PDF[zE](pz,estz) + * PDF[En](p,on,mn,estz) = PDF[En](p,on,mn) * PDF[zE](pz,estz) + * =================================================================================== + * =====================================GRADIENT====================================== + * + * Grad(PDF[En](p,on,mn,estz)) wrt p = Grad( PDF[E1](p,o1,m1) * ... * PDF[E2](p,on,mn) * PDF[zE](pz,estz)) wrt {px,py,pz} + * + * Generalizing the product rule for n factors, we have: + * + * Grad(PDF[En](p,on,mn)) wrt p = sum(gradPDF[Ei] / PDF[Ei]) * prod(PDF[Ei]) + * Grad(PDF[En](p,on,mn)) wrt p = sum(gradPDF[Ei] / PDF[Ei]) * PDF[En](p,on,mn) + * + * note that: gradPDF[zE](pz,estz) wrt {px,py,pz} = {0,0,d/d_pz} + * =================================================================================== + * */ + +#pragma once +#include "Singleton.h" +#include "Field.h" +#include "Matrix4D.h" +#include "FieldNoise.h" + +#include //Linear least-squares fitting +#include //Singular value decomposition +#include //Multidimensional minimization + +class LocalizerV2 { + friend class Singleton; + +public: + + /** + * Compute 3D position and 3D orientation + * sets "is_uptodate" to true if there is new information available (rotation+translation) + * If no new information is available, the last known position is provided + */ + void run(); + + /** + * Print report (average errors + solution analysis) + */ + void print_report() const; + + /** + * Transformation matrices + * They are initialized as 4x4 identity matrices + */ + const Matrix4D &headTofieldTransform = final_headTofieldTransform; // rotation + translation + const Matrix4D &headTofieldRotate = final_headTofieldRotate; // rotation + const Matrix4D &fieldToheadTransform = final_fieldToheadTransform; // rotation + translation + const Matrix4D &fieldToheadRotate = final_fieldToheadRotate; // rotation + + /** + * Head position + * translation part of headTofieldTransform + */ + const Vector3f &head_position = final_translation; + + /** + * True if head_position and the transformation matrices are up to date + * (false if this is not a visual step, or not enough elements are visible) + */ + const bool &is_uptodate = _is_uptodate; + + /** + * Number of simulation steps since last update (see is_uptodate) + * If (is_uptodate==true) then "steps_since_last_update" is zero + */ + const unsigned int &steps_since_last_update = _steps_since_last_update; + + /** + * Head z coordinate + * This variable is often equivalent to head_position.z, but sometimes it differs. + * There are situations in which the rotation and translation cannot be computed, + * but the z-coordinate can still be found through vision. + * It should be used in applications which rely on z as an independent coordinate, + * such as detecting if the robot has fallen, or as machine learning observations. + * It should not be used for 3D transformations. + */ + const float &head_z = final_z; + + /** + * Since head_z can be computed in situations where self-location is impossible, + * this variable is set to True when head_z is up to date + */ + const bool &is_head_z_uptodate = _is_head_z_uptodate; + + /** + * Transform relative to absolute coordinates using headTofieldTransform + * @return absolute coordinates + */ + Vector3f relativeToAbsoluteCoordinates(const Vector3f relativeCoordinates) const; + + /** + * Transform absolute to relative coordinates using fieldToheadTransform + * @return relative coordinates + */ + Vector3f absoluteToRelativeCoordinates(const Vector3f absoluteCoordinates) const; + + /** + * Get 3D velocity (based on last n 3D positions) + * @param n number of last positions to evaluate (min 1, max 9) + * Example for n=3: + * current position: p0 (current time step) + * last position: p1 (typically* 3 time steps ago) + * position before: p2 (typically* 6 time steps ago) + * position before: p3 (typically* 9 time steps ago) + * RETURN value: p0-p3 + * *Note: number of actual time steps depends on server configuration and whether + * the agent was able to self-locate on the last n visual steps + * @return 3D velocity vector + */ + Vector3f get_velocity(unsigned int n) const; + + /** + * Get last known head z coordinate + * Note: this variable is based on head_z. It can be used as an independent coordinate, + * but it should not be used for 3D transformations, as it may be out of sync with + * the x and y coordinates. (see head_z) + * @return last known head z coordinate + */ + float get_last_head_z() const {return last_z;} + + +private: + + //================================================================================================= + //============================================================================ main private methods + //================================================================================================= + + bool find_z_axis_orient_vec(); //returns true if successful + void fit_ground_plane(); + + void find_z(const Vector3f& Zvec); + bool find_xy(); + bool guess_xy(); + + bool fine_tune_aux(float &initial_angle, float &initial_x, float &initial_y, bool use_probabilities); + bool fine_tune(float initial_angle, float initial_x, float initial_y); + + static double map_error_logprob(const gsl_vector *v, void *params); + static double map_error_2d(const gsl_vector *v, void *params); + + void commit_everything(); + + + //================================================================================================= + //=================================================================== private transformation matrix + //================================================================================================= + + //PRELIMINARY MATRIX - where all operations are stored + //if the algorithm is not successful, the final matrix is not modified + void prelim_reset(); + Matrix4D prelimHeadToField = Matrix4D(); //initialized as identity matrix + + //FINAL MATRIX - the user has access to a public const reference of the variables below + Matrix4D final_headTofieldTransform; // rotation + translation + Matrix4D final_headTofieldRotate; // rotation + Matrix4D final_fieldToheadTransform; // rotation + translation + Matrix4D final_fieldToheadRotate; // rotation + + Vector3f final_translation; //translation + + float final_z; //independent z translation (may be updated more often) + + //================================================================================================= + //=============================================================================== useful statistics + //================================================================================================= + + std::array position_history; + unsigned int position_history_ptr = 0; + + float last_z = 0.5; + + unsigned int _steps_since_last_update = 0; + bool _is_uptodate = false; + bool _is_head_z_uptodate = false; + + //================================================================================================= + //================================================================================ debug statistics + //================================================================================================= + + int stats_sample_position_error(const Vector3f sample, const Vector3f& cheat, double error_placeholder[]); + void stats_reset(); + + double errorSum_fineTune_before[7] = {0}; //[0,1,2]- xyz err sum, [3]-2D err sum, [4]-2D err sq sum, [5]-3D err sum, [6]-3D err sq sum + double errorSum_fineTune_euclidianDist[7] = {0}; //[0,1,2]- xyz err sum, [3]-2D err sum, [4]-2D err sq sum, [5]-3D err sum, [6]-3D err sq sum + double errorSum_fineTune_probabilistic[7] = {0}; //[0,1,2]- xyz err sum, [3]-2D err sum, [4]-2D err sq sum, [5]-3D err sum, [6]-3D err sq sum + double errorSum_ball[7] = {0}; //[0,1,2]- xyz err sum, [3]-2D err sum, [4]-2D err sq sum, [5]-3D err sum, [6]-3D err sq sum + int counter_fineTune = 0; + int counter_ball = 0; + + enum STATE{NONE, RUNNING, MINFAIL, BLIND, FAILzNOgoal, FAILzLine, FAILz, FAILtune, FAILguessLine, FAILguessNone, FAILguessMany, FAILguessTest, DONE, ENUMSIZE}; + STATE state = NONE; + + void stats_change_state(enum STATE s); + int state_counter[STATE::ENUMSIZE] = {0}; + +}; + + +typedef Singleton SLocalizerV2; \ No newline at end of file diff --git a/cpp/localization/Makefile b/cpp/localization/Makefile new file mode 100644 index 0000000..d37469f --- /dev/null +++ b/cpp/localization/Makefile @@ -0,0 +1,15 @@ +src = $(wildcard *.cpp) +obj = $(src:.c=.o) + +LDFLAGS = -lgsl -lgslcblas +CFLAGS = -O3 -shared -std=c++11 -fPIC -Wall $(PYBIND_INCLUDES) + +all: $(obj) + g++ $(CFLAGS) -o localization.so $^ $(LDFLAGS) + +debug: $(filter-out lib_main.cpp,$(obj)) + g++ -O0 -std=c++14 -Wall -g -o debug.bin debug_main.cc $^ $(LDFLAGS) + +.PHONY: clean +clean: + rm -f $(obj) all diff --git a/cpp/localization/Matrix4D.cpp b/cpp/localization/Matrix4D.cpp new file mode 100644 index 0000000..217d08e --- /dev/null +++ b/cpp/localization/Matrix4D.cpp @@ -0,0 +1,303 @@ +#include "Matrix4D.h" + + + +Matrix4D::Matrix4D() { + // identity matrix + const float tmp[M_LENGTH] = { + 1, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 + }; + + for (int i = 0; i < M_LENGTH; i++) + content[i] = tmp[i]; +} + +Matrix4D::Matrix4D(const float a[M_LENGTH]) { + // creates a matrix using a vector of floats + for (int i = 0; i < M_LENGTH; i++) + content[i] = a[i]; +} + +Matrix4D::Matrix4D(const Matrix4D& other) { + // creates a matrix using another matrix + for (int i = 0; i < M_LENGTH; i++) + content[i] = other.content[i]; +} + +Matrix4D::Matrix4D(const Vector3f& v) { + float x = v.getX(); + float y = v.getY(); + float z = v.getZ(); + + // gets a translation matrix from xyz coordinates + const float tmp[M_LENGTH] = { + 1, 0, 0, x, + 0, 1, 0, y, + 0, 0, 1, z, + 0, 0, 0, 1 + }; + + for (int i = 0; i < M_LENGTH; i++) + content[i] = tmp[i]; +} + +Matrix4D::~Matrix4D() { + // nothing to do +} + +void Matrix4D::set(unsigned i, float value) { + content[i] = value; +} + +void Matrix4D::set(unsigned i, unsigned j, float value) { + content[M_COLS * i + j] = value; +} + +float Matrix4D::get(unsigned i) const{ + return content[i]; +} + +float Matrix4D::get(unsigned i, unsigned j) const{ + return content[M_COLS * i + j]; +} + +Matrix4D Matrix4D::operator+(const Matrix4D& other) const { + // sums two matrices + float tmp[M_LENGTH]; + + for (int i = 0; i < M_LENGTH; i++) + tmp[i] = this->content[i] + other.content[i]; + + return Matrix4D(tmp); +} + +Matrix4D Matrix4D::operator-(const Matrix4D& other) const { + // subtracts a matrix from another + float tmp[M_LENGTH]; + + for (int i = 0; i < M_LENGTH; i++) + tmp[i] = this->content[i] - other.content[i]; + + return Matrix4D(tmp); +} + +Matrix4D Matrix4D::operator*(const Matrix4D& other) const { + + // multiplies two matrices + float tmp[M_LENGTH]; + + for (int i = 0; i < M_ROWS; i++) { + for (int j = 0; j < M_COLS; j++) { + tmp[M_COLS * i + j] = 0; + + for (int k = 0; k < M_COLS; k++) + tmp[M_COLS * i + j] += this->content[M_COLS * i + k] * other.content[M_COLS * k + j]; + } + } + + return Matrix4D(tmp); +} + +Vector3f Matrix4D::operator*(const Vector3f& vec) const { + // multiplies this matrix by a vector of four floats + // the first three are from vec and the remaining float is 1.0 + float x = 0; + float y = 0; + float z = 0; + + x = this->content[0] * vec.getX(); + x += this->content[1] * vec.getY(); + x += this->content[2] * vec.getZ(); + x += this->content[3]; + + y = this->content[4] * vec.getX(); + y += this->content[5] * vec.getY(); + y += this->content[6] * vec.getZ(); + y += this->content[7]; + + z = this->content[8] * vec.getX(); + z += this->content[9] * vec.getY(); + z += this->content[10] * vec.getZ(); + z += this->content[11]; + + return Vector3f(x, y, z); +} + +void Matrix4D::operator=(const Matrix4D& other) { + // assigns another matrix to this one + for (int i = 0; i < M_LENGTH; i++) + content[i] = other.content[i]; +} + +bool Matrix4D::operator==(const Matrix4D& other) const { + // checks whether this matrix is equal to another + for (int i = 0; i < M_LENGTH; i++) + if (content[i] != other.content[i]) + return false; + + return true; +} + +void Matrix4D::operator+=(const Matrix4D& other) { + // sums this matrix to another and returns the result + for (int i = 0; i < M_LENGTH; i++) + content[i] += other.content[i]; +} + +void Matrix4D::operator-=(const Matrix4D& other) { + // subtracts this matrix from another and returns the result + for (int i = 0; i < M_LENGTH; i++) + content[i] -= other.content[i]; +} + +float& Matrix4D::operator[](const unsigned pos) { + // gets a value from position + return content[pos]; +} + +Vector3f Matrix4D::toVector3f() const { + // gets the translation vector from the matrix + float x = get(0, M_COLS - 1); + float y = get(1, M_COLS - 1); + float z = get(2, M_COLS - 1); + + return Vector3f(x, y, z); +} + +Matrix4D Matrix4D::transpose() { + // returns the transpose of this matrix + Matrix4D result; + + for (int i = 0; i < M_ROWS; i++) + for (int j = 0; j < M_COLS; j++) + result.set(j, i, get(i, j)); + + return result; +} + +Matrix4D Matrix4D::inverse_tranformation_matrix() const { + + Matrix4D inv; //Initialized as identity matrix + inverse_tranformation_matrix(inv); + return inv; +} + +void Matrix4D::inverse_tranformation_matrix(Matrix4D& inv) const { + + //Rotation + inv[0] = content[0]; inv[1] = content[4]; inv[2] = content[8]; + inv[4] = content[1]; inv[5] = content[5]; inv[6] = content[9]; + inv[8] = content[2]; inv[9] = content[6]; inv[10] = content[10]; + + //Translation + inv[3] = -content[0]*content[3] - content[4]*content[7] - content[8]*content[11]; + inv[7] = -content[1]*content[3] - content[5]*content[7] - content[9]*content[11]; + inv[11] = -content[2]*content[3] - content[6]*content[7] - content[10]*content[11]; + +} + +bool Matrix4D::inverse(Matrix4D& inverse_out) const{ + // returns the inverse of this matrix + + float inv[16], det; + const float* m = content; + int i; + + inv[0] = m[5] * m[10] * m[15] - m[5] * m[11] * m[14] - m[9] * m[6] * m[15] + m[9] * m[7] * m[14] + m[13] * m[6] * m[11] - m[13] * m[7] * m[10]; + inv[4] = -m[4] * m[10] * m[15] + m[4] * m[11] * m[14] + m[8] * m[6] * m[15] - m[8] * m[7] * m[14] - m[12] * m[6] * m[11] + m[12] * m[7] * m[10]; + inv[8] = m[4] * m[9] * m[15] - m[4] * m[11] * m[13] - m[8] * m[5] * m[15] + m[8] * m[7] * m[13] + m[12] * m[5] * m[11] - m[12] * m[7] * m[9]; + inv[12] = -m[4] * m[9] * m[14] + m[4] * m[10] * m[13] + m[8] * m[5] * m[14] - m[8] * m[6] * m[13] - m[12] * m[5] * m[10] + m[12] * m[6] * m[9]; + inv[1] = -m[1] * m[10] * m[15] + m[1] * m[11] * m[14] + m[9] * m[2] * m[15] - m[9] * m[3] * m[14] - m[13] * m[2] * m[11] + m[13] * m[3] * m[10]; + inv[5] = m[0] * m[10] * m[15] - m[0] * m[11] * m[14] - m[8] * m[2] * m[15] + m[8] * m[3] * m[14] + m[12] * m[2] * m[11] - m[12] * m[3] * m[10]; + inv[9] = -m[0] * m[9] * m[15] + m[0] * m[11] * m[13] + m[8] * m[1] * m[15] - m[8] * m[3] * m[13] - m[12] * m[1] * m[11] + m[12] * m[3] * m[9]; + inv[13] = m[0] * m[9] * m[14] - m[0] * m[10] * m[13] - m[8] * m[1] * m[14] + m[8] * m[2] * m[13] + m[12] * m[1] * m[10] - m[12] * m[2] * m[9]; + inv[2] = m[1] * m[6] * m[15] - m[1] * m[7] * m[14] - m[5] * m[2] * m[15] + m[5] * m[3] * m[14] + m[13] * m[2] * m[7] - m[13] * m[3] * m[6]; + inv[6] = -m[0] * m[6] * m[15] + m[0] * m[7] * m[14] + m[4] * m[2] * m[15] - m[4] * m[3] * m[14] - m[12] * m[2] * m[7] + m[12] * m[3] * m[6]; + inv[10] = m[0] * m[5] * m[15] - m[0] * m[7] * m[13] - m[4] * m[1] * m[15] + m[4] * m[3] * m[13] + m[12] * m[1] * m[7] - m[12] * m[3] * m[5]; + inv[14] = -m[0] * m[5] * m[14] + m[0] * m[6] * m[13] + m[4] * m[1] * m[14] - m[4] * m[2] * m[13] - m[12] * m[1] * m[6] + m[12] * m[2] * m[5]; + inv[3] = -m[1] * m[6] * m[11] + m[1] * m[7] * m[10] + m[5] * m[2] * m[11] - m[5] * m[3] * m[10] - m[9] * m[2] * m[7] + m[9] * m[3] * m[6]; + inv[7] = m[0] * m[6] * m[11] - m[0] * m[7] * m[10] - m[4] * m[2] * m[11] + m[4] * m[3] * m[10] + m[8] * m[2] * m[7] - m[8] * m[3] * m[6]; + inv[11] = -m[0] * m[5] * m[11] + m[0] * m[7] * m[9] + m[4] * m[1] * m[11] - m[4] * m[3] * m[9] - m[8] * m[1] * m[7] + m[8] * m[3] * m[5]; + inv[15] = m[0] * m[5] * m[10] - m[0] * m[6] * m[9] - m[4] * m[1] * m[10] + m[4] * m[2] * m[9] + m[8] * m[1] * m[6] - m[8] * m[2] * m[5]; + + det = m[0] * inv[0] + m[1] * inv[4] + m[2] * inv[8] + m[3] * inv[12]; + + if (det == 0) + return false; + + det = 1.0 / det; + + for (i = 0; i < 16; i++) + inverse_out.set(i, inv[i] * det); + + return true; +} + + +Matrix4D Matrix4D::rotationX(float angle) { + // rotates this matrix around the x-axis + const float tmp[M_LENGTH] = { + 1, 0, 0, 0, + 0, Cos(angle), -Sin(angle), 0, + 0, Sin(angle), Cos(angle), 0, + 0, 0, 0, 1 + }; + + return Matrix4D(tmp); +} + +Matrix4D Matrix4D::rotationY(float angle) { + // rotates this matrix around the y-axis + const float tmp[M_LENGTH] = { + Cos(angle), 0, Sin(angle), 0, + 0, 1, 0, 0, + -Sin(angle), 0, Cos(angle), 0, + 0, 0, 0, 1 + }; + + return Matrix4D(tmp); +} + +Matrix4D Matrix4D::rotationZ(float angle) { + // rotates this matrix around the z axis + const float tmp[M_LENGTH] = { + Cos(angle), -Sin(angle), 0, 0, + Sin(angle), Cos(angle), 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 1 + }; + + return Matrix4D(tmp); +} + +Matrix4D Matrix4D::rotation(Vector3f axis, float angle) { + // assuming that axis is a unit vector + float x = axis.getX(); + float y = axis.getY(); + float z = axis.getZ(); + + const float tmp[M_LENGTH] = { + (x * x * (1 - Cos(angle)) + Cos(angle)), (x * y * (1 - Cos(angle)) - z * Sin(angle)), (x * z * (1 - Cos(angle)) + y * Sin(angle)), 0, + (x * y * (1 - Cos(angle)) + z * Sin(angle)), (y * y * (1 - Cos(angle)) + Cos(angle)), (y * z * (1 - Cos(angle)) - x * Sin(angle)), 0, + (x * z * (1 - Cos(angle)) - y * Sin(angle)), (y * z * (1 - Cos(angle)) + x * Sin(angle)), (z * z * (1 - Cos(angle)) + Cos(angle)), 0, + 0, 0, 0, 1 + }; + + return Matrix4D(tmp); +} + +Matrix4D Matrix4D::translation(float x, float y, float z) { + // gets a translation matrix from xyz coordinates + const float tmp[M_LENGTH] = { + 1, 0, 0, x, + 0, 1, 0, y, + 0, 0, 1, z, + 0, 0, 0, 1 + }; + + return Matrix4D(tmp); +} + diff --git a/cpp/localization/Matrix4D.h b/cpp/localization/Matrix4D.h new file mode 100644 index 0000000..927b6e4 --- /dev/null +++ b/cpp/localization/Matrix4D.h @@ -0,0 +1,224 @@ +#ifndef MATRIX4D_H_ +#define MATRIX4D_H_ + +#include "Vector3f.h" + +#define M_ROWS 4 +#define M_COLS 4 +#define M_LENGTH (M_ROWS * M_COLS) + +/** + * @class Matrix4D + * + * This class represents a 4x4 matrix and contains methods + * to operate on it + * + * @author Nuno Almeida (nuno.alm@ua.pt) + * Adapted - Miguel Abreu + */ +class Matrix4D { + +public: + float content[M_LENGTH]; // content of the matrix, vector-like + + /** + * Default constructor returns the identity matrix + */ + Matrix4D(); + + /** + * Constructor returns a matrix from a vector of floats + */ + Matrix4D(const float[]); + + /** + * Copy constructor + */ + Matrix4D(const Matrix4D& other); + + /** + * Constructor returns a translation matrix + */ + Matrix4D(const Vector3f& v); + + /** + * Destructor + */ + ~Matrix4D(); + + /** + * Sets a value in some position (vector-like) + */ + void set(unsigned i, float value); + + /** + * Sets a value in some position (matrix-like) + */ + void set(unsigned i, unsigned j, float value); + + /** + * Gets a value from some position (vector-like) + */ + float get(unsigned i) const; + + /** + * Gets a value from some position (matrix-like) + */ + float get(unsigned i, unsigned j) const; + + /** + * Assigns another matrix to this one + * + * @param other Another matrix + */ + void operator=(const Matrix4D& other); + + /** + * Gets the sum of another vector with this one + * + * @param other Another matrix + */ + Matrix4D operator+(const Matrix4D& other) const; + + /** + * Sums this matrix to another + * + * @param other Another matrix + * @return Sum of this matrix with another + */ + void operator+=(const Matrix4D& other); + + /** + * Gets the subtraction of another vector from this one + * + * @param other Another matrix + */ + Matrix4D operator-(const Matrix4D&) const; + + /** + * Subtracts another matrix from this one + * + * @param other Another matrix + * @return This matrix minus another + */ + void operator-=(const Matrix4D& other); + + /** + * Multiplies two matrices + * + * @param other Another matrix + * @return Multiplication matrix + */ + Matrix4D operator*(const Matrix4D& other) const; + + /** + * Multiplies a matrix with a vector + * + * @param other Another matrix + * @return Multiplication vector + */ + Vector3f operator*(const Vector3f& other) const; + + /** + * Checks whether this matrix is equal to another + * + * @param other Another matrix + * @return true/false + */ + bool operator==(const Matrix4D&) const; + + /** + * Gets the content of the position i (in vector representation) of this + * matrix + * + * @param pos Position + * @return Value in the position + */ + float& operator[](const unsigned pos); + + /** + * Gets the translation vector from this matrix + * + * @return Translation vector + */ + Vector3f toVector3f() const; + + /** + * Gets the transpose of this matrix + * + * @return Transpose + */ + Matrix4D transpose(); + + /** + * Gets the inverse of this matrix (m.abreu@2020) + * + * @param inverse_out inverse matrix + * @return true if it exists + */ + bool inverse(Matrix4D& inverse_out) const; + + /** + * Gets the inverse of this matrix, (m.abreu@2020) + * assuming that it represents an affine transformation with only translation and rotation + * This method creates a new matrix + * + * @return inverse matrix + */ + Matrix4D inverse_tranformation_matrix() const; + + /** + * Gets the inverse of this matrix, (m.abreu@2020) + * assuming that it represents an affine transformation with only translation and rotation + * This method overwrites the given matrix + * + * @param inverse_out inverse matrix output + */ + void inverse_tranformation_matrix(Matrix4D& inverse_out) const; + + + /** + * Gets the rotation matrix around x-axis + * + * @param angle Angle (degrees) + */ + static Matrix4D rotationX(float angle); + + /** + * Gets the rotation matrix around y-axis + * + * @param angle Angle (degrees) + */ + static Matrix4D rotationY(float angle); + + /** + * Gets the rotation matrix around z-axis + * + * @param angle Angle (degrees) + */ + static Matrix4D rotationZ(float angle); + + /** + * Gets the rotation matrix around an arbitrary axis + * + * @param axis Axis (x, y and z) + * @param angle Angle (degrees) + */ + static Matrix4D rotation(Vector3f axis, float angle); + + /** + * Gets the translation matrix + * + * @param x x-axis coordinate + * @param y y-axis coordinate + * @param z z-axis coordinate + */ + static Matrix4D translation(Vector3f v) { + return translation(v.getX(), v.getY(), v.getZ()); + } + static Matrix4D translation(float x, float y, float z); + + +}; + +#endif // MATRIX4D_H_ diff --git a/cpp/localization/RobovizLogger.cpp b/cpp/localization/RobovizLogger.cpp new file mode 100644 index 0000000..bf274d1 --- /dev/null +++ b/cpp/localization/RobovizLogger.cpp @@ -0,0 +1,131 @@ +#include +#include "RobovizLogger.h" +#include "robovizdraw.h" + +#define ROBOVIZ_HOST "localhost" +#define ROBOVIZ_PORT "32769" + + +RobovizLogger* RobovizLogger::Instance() { + static RobovizLogger instance; + return &instance; +} + +RobovizLogger::RobovizLogger() {} + +RobovizLogger::~RobovizLogger() { + destroy(); +} + +int RobovizLogger::init() { + if (is_initialized) return 0; + struct addrinfo hints; + int rv; + int numbytes; + + memset(&hints, 0, sizeof hints); + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_DGRAM; + + if ((rv = getaddrinfo(ROBOVIZ_HOST, ROBOVIZ_PORT, &hints, &servinfo)) != 0) { + //fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(rv)); + return 1; + } + + // loop through all the results and make a socket + for (p = servinfo; p != NULL; p = p->ai_next) { + if ((sockfd = socket(p->ai_family, p->ai_socktype, + p->ai_protocol)) == -1) { + perror("socket"); + continue; + } + break; + } + + if (p == NULL) { + return 2; + } + + is_initialized = true; + return 0; +} + +void RobovizLogger::destroy() { + freeaddrinfo(servinfo); + servinfo=NULL; + close(sockfd); +} + +void RobovizLogger::swapBuffers(const string* setName) { + int bufSize = -1; + unsigned char* buf = newBufferSwap(setName, &bufSize); + sendto(sockfd, buf, bufSize, 0, p->ai_addr, p->ai_addrlen); + delete[] buf; +} + +void RobovizLogger::drawLine(float x1, float y1, float z1, float x2, float y2, float z2, + float thickness, float r, float g, float b, const string* setName) { + float pa[3] = {x1, y1, z1}; + float pb[3] = {x2, y2, z2}; + float color[3] = {r, g, b}; + + int bufSize = -1; + unsigned char* buf = newLine(pa, pb, thickness, color, setName, &bufSize); + sendto(sockfd, buf, bufSize, 0, p->ai_addr, p->ai_addrlen); + delete[] buf; +} + +void RobovizLogger::drawCircle(float x, float y, float radius, float thickness, + float r, float g, float b, const string* setName) { + float center[2] = {x, y}; + float color[3] = {r, g, b}; + + int bufSize = -1; + unsigned char* buf = newCircle(center, radius, thickness, color, setName, &bufSize); + sendto(sockfd, buf, bufSize, 0, p->ai_addr, p->ai_addrlen); + delete[] buf; +} + +void RobovizLogger::drawSphere(float x, float y, float z, float radius, + float r, float g, float b, const string* setName) { + float center[3] = {x, y, z}; + float color[3] = {r, g, b}; + + int bufSize = -1; + unsigned char* buf = newSphere(center, radius, color, setName, &bufSize); + sendto(sockfd, buf, bufSize, 0, p->ai_addr, p->ai_addrlen); + delete[] buf; +} + +void RobovizLogger::drawPoint(float x, float y, float z, float size, + float r, float g, float b, const string* setName) { + float center[3] = {x, y, z}; + float color[3] = {r, g, b}; + + int bufSize = -1; + unsigned char* buf = newPoint(center, size, color, setName, &bufSize); + sendto(sockfd, buf, bufSize, 0, p->ai_addr, p->ai_addrlen); + delete[] buf; +} + +void RobovizLogger::drawPolygon(const float* v, int numVerts, float r, float g, float b, + float a, const string* setName) { + float color[4] = {r, g, b, a}; + + int bufSize = -1; + unsigned char* buf = newPolygon(v, numVerts, color, setName, &bufSize); + sendto(sockfd, buf, bufSize, 0, p->ai_addr, p->ai_addrlen); + delete[] buf; +} + +void RobovizLogger::drawAnnotation(const string* text, float x, float y, float z, float r, + float g, float b, const string* setName) { + float color[3] = {r, g, b}; + float pos[3] = {x, y, z}; + + int bufSize = -1; + unsigned char* buf = newAnnotation(text, pos, color, setName, &bufSize); + sendto(sockfd, buf, bufSize, 0, p->ai_addr, p->ai_addrlen); + delete[] buf; +} + diff --git a/cpp/localization/RobovizLogger.h b/cpp/localization/RobovizLogger.h new file mode 100644 index 0000000..a858725 --- /dev/null +++ b/cpp/localization/RobovizLogger.h @@ -0,0 +1,58 @@ +/* + * RobovizLogger.h + * + * Created on: 2013/06/24 + * Author: Rui Ferreira + */ + +#ifndef _ROBOVIZLOGGER_H_ +#define _ROBOVIZLOGGER_H_ + +#define RobovizLoggerInstance RobovizLogger::Instance() + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class RobovizLogger { +private: + RobovizLogger(); + RobovizLogger(const RobovizLogger&); + RobovizLogger& operator=(const RobovizLogger&); + virtual ~RobovizLogger(); + bool is_initialized = false; + +public: + static RobovizLogger* Instance(); + + int init(); + void destroy(); + void swapBuffers(const std::string* setName); + + void drawLine(float x1, float y1, float z1, float x2, float y2, float z2, + float thickness, float r, float g, float b, const std::string* setName); + void drawCircle(float x, float y, float radius, float thickness, + float r, float g, float b, const std::string* setName); + void drawSphere(float x, float y, float z, float radius, + float r, float g, float b, const std::string* setName); + void drawPoint(float x, float y, float z, float size, + float r, float g, float b, const std::string* setName); + void drawPolygon(const float* v, int numVerts, float r, float g, float b, + float a, const std::string* setName); + void drawAnnotation(const std::string* text, float x, float y, float z, float r, + float g, float b, const std::string* setName); + +private: + int sockfd; + struct addrinfo* p; + struct addrinfo* servinfo; +}; + +#endif // _ROBOVIZLOGGER_H_ diff --git a/cpp/localization/Singleton.h b/cpp/localization/Singleton.h new file mode 100644 index 0000000..12bdf8e --- /dev/null +++ b/cpp/localization/Singleton.h @@ -0,0 +1,20 @@ +#ifndef SINGLETON_H +#define SINGLETON_H + +template +class Singleton { +public: + + static T& getInstance() { + static T instance; + return instance; + } + +private: + Singleton(); + ~Singleton(); + Singleton(Singleton const&); + Singleton& operator=(Singleton const&); +}; + +#endif // SINGLETON_H diff --git a/cpp/localization/Vector3f.cpp b/cpp/localization/Vector3f.cpp new file mode 100644 index 0000000..c317a7f --- /dev/null +++ b/cpp/localization/Vector3f.cpp @@ -0,0 +1,197 @@ +#include "Vector3f.h" + + +using namespace std; + +Vector3f::Vector3f() { + x = 0.0; + y = 0.0; + z = 0.0; +} + +Vector3f::Vector3f(float x, float y, float z) { + this->x = x; + this->y = y; + this->z = z; +} + +Vector3f::Vector3f(const Vector3f& other) { + x = other.x; + y = other.y; + z = other.z; +} + +Vector3f::Vector3f(const Vector& other) { + x = other.x; + y = other.y; + z = 0.0; +} + +Vector3f::~Vector3f() { +} + +float Vector3f::getX() const { + return x; +} + +void Vector3f::setX(float x) { + this->x = x; +} + +float Vector3f::getY() const { + return y; +} + +void Vector3f::setY(float y) { + this->y = y; +} + +float Vector3f::getZ() const { + return z; +} + +void Vector3f::setZ(float z) { + this->z = z; +} + +float Vector3f::operator[](const int index) const { + float val=0.0; + switch (index) { + case 0: val = x; + break; + case 1: val = y; + break; + case 2: val = z; + break; + } + return val; +} + +Vector3f Vector3f::operator+(const Vector3f& other) const { + return Vector3f(x + other.x, y + other.y, z + other.z); +} + +Vector3f Vector3f::operator-(const Vector3f& other) const { + return Vector3f(x - other.x, y - other.y, z - other.z); +} + +Vector3f Vector3f::operator-() const { + return Vector3f() - * this; +} + +Vector3f Vector3f::operator*(const Vector3f& other) const { + return Vector3f(x * other.x, y * other.y, z * other.z); +} + +Vector3f Vector3f::operator/(const Vector3f& other) const { + return Vector3f(x / other.x, y / other.y, z / other.z); +} + +bool Vector3f::operator==(const Vector3f& other) const { + return x == other.x && y == other.y && z == other.z; +} + +Vector3f Vector3f::operator/(float factor) const { + return Vector3f(x / factor, y / factor, z / factor); +} + +Vector3f Vector3f::operator+(float factor) const { + return Vector3f(x + factor, y + factor, z + factor); +} + +Vector3f Vector3f::operator%(float factor) const { + return Vector3f(fmod(x, factor), fmod(y, factor), fmod(z, factor)); +} + +Vector3f Vector3f::operator*(float factor) const { + return Vector3f(x * factor, y * factor, z * factor); +} + +Vector3f Vector3f::operator+=(const Vector3f& other) { + x += other.x; + y += other.y; + z += other.z; + + return *this; +} + +Vector3f Vector3f::operator+=(float factor) { + x += factor; + y += factor; + z += factor; + + return *this; +} + +Vector3f Vector3f::operator-=(const Vector3f& other) { + x -= other.x; + y -= other.y; + z -= other.z; + + return *this; +} + +Vector3f Vector3f::operator-=(float factor) { + x -= factor; + y -= factor; + z -= factor; + + return *this; +} + +Vector3f Vector3f::operator/=(float factor) { + x /= factor; + y /= factor; + z /= factor; + + return *this; +} + + +float Vector3f::innerProduct(const Vector3f& other) const { + return x * other.x + y * other.y + z * other.z; +} + +Vector3f Vector3f::crossProduct(const Vector3f& other) const { + Vector3f aux; + + aux.x = this->y * other.z - this->z * other.y; + aux.y = this->z * other.x - this->x * other.z; + aux.z = this->x * other.y - this->y * other.x; + + return aux; +} + +float Vector3f::length() const { + return sqrt(x * x + y * y + z * z); +} + + +Vector3f Vector3f::normalize(float len) const { + return (*this) * (len / this->length()); +} + +Vector3f Vector3f::toCartesian() const { + // x = distance + // y = theta + // z = phi + return Vector3f(x * Cos(z) * Cos(y), x * Cos(z) * Sin(y), x * Sin(z)); +} + +Vector3f Vector3f::toPolar() const { + return Vector3f(this->length(), // distance + ATan2(y, x), // theta + ATan2(z, sqrt(x * x + y * y))); // phi +} + +float Vector3f::dist(const Vector3f &other) const { + return (*this -other).length(); +} + +Vector Vector3f::to2d() const { + return Vector(x, y); +} + +Vector3f Vector3f::determineMidpoint(Vector3f a, Vector3f b) { + return (a+b)/2; /* m.abreu@2020 */ +} diff --git a/cpp/localization/Vector3f.h b/cpp/localization/Vector3f.h new file mode 100644 index 0000000..4dfd7c8 --- /dev/null +++ b/cpp/localization/Vector3f.h @@ -0,0 +1,187 @@ +#ifndef VECTOR3F_H +#define VECTOR3F_H + +#include +#include "Geometry.h" +#include +//! Describes a vector of three floats + +/*! + * \author Hugo Picado (hugopicado@ua.pt) + * \author Nuno Almeida (nuno.alm@ua.pt) + * Adapted - Miguel Abreu + */ +class Vector3f { +public: + //! Default constructor + Vector3f(); + + /*! + * Constructor + * + * \param x x-axis coordinate + * \param y y-axis coordinate + * \param z z-axis coordinate + */ + Vector3f(float x, float y, float z); + + //! Copy constructor + Vector3f(const Vector3f& other); + + Vector3f(const Vector& other); + + //! Destructor + ~Vector3f(); + + //! getX + float getX() const; + void setX(float x); + + //! getY + float getY() const; + void setY(float y); + + //! getZ + float getZ() const; + void setZ(float z); + + //! Access X Y Z through indexes 0 1 2 + float operator[](const int) const; + + //! Sums this vector to another + Vector3f operator+(const Vector3f& other) const; + + //! Subtracts another vector from this + Vector3f operator-(const Vector3f& other) const; + + //! Negates the vector + Vector3f operator-() const; + + //! Multiples this vector by another + Vector3f operator*(const Vector3f& other) const; + + //! Divides this vector by another + Vector3f operator/(const Vector3f& other) const; + + bool operator==(const Vector3f& other) const; + + /*! + * Multiples this vector by a scalar + * + * \param factor Scalar number + */ + Vector3f operator*(float factor) const; + + /*! + * Divides this vector by a scalar + * + * \param factor Scalar number + */ + Vector3f operator/(float factor) const; + + /*! + * Add this vector to a scalar + * + * \param factor Scalar number + */ + Vector3f operator+(float factor) const; + + /*! + * Integer remainder this vector by a scalar + * + * \param factor Scalar number + */ + Vector3f operator%(float factor) const; + + /** + * Sums this vector to another assuming the value of the result + * + * \param other Vector3f + */ + Vector3f operator+=(const Vector3f& other); + + /** + * Add this vector to a scalar assuming the value of the result + * + * \param factor Scalar number + */ + Vector3f operator+=(float factor); + + /** + * Subtracts other vector from this vector assuming the value of the result + * + * \param other Vector3f + */ + Vector3f operator-=(const Vector3f& other); + + /** + * Subtracts a scalar from this vector assuming the value of the result + * + * \param factor Scalar number + */ + Vector3f operator-=(float factor); + + /*! + * Divides this vector by a scalar assuming the value of the result + * + * \param factor Scalar number + */ + Vector3f operator/=(float factor); + + /*! + * Computes the inner product of this vector with another + * + * \param other Vector to compute the inner product + * \return Resultant vector + */ + float innerProduct(const Vector3f& other) const; + + /*! + * Computes the cross product of this vector with another + * + * \param other Vector to compute the cross product + * \return Resultant vector + */ + Vector3f crossProduct(const Vector3f& other) const; + + /*! + * Gets the length of the vector + * + * \return Length of the vector + */ + float length() const; + + /*! + * Normalizes the vector to an arbitrary length (default is 1) + * + * \param len Length + */ + Vector3f normalize(float len = 1) const; + /*! + * Converts the vector coordinates from polar to cartesian + * It is assumed that the vector has the angular coordinates in degrees + */ + Vector3f toCartesian() const; + + //! Converts the vector coordinates from cartesian to polar + Vector3f toPolar() const; + + //! Converts the 3d vector to a 2d vector + Vector to2d() const; + + //! Gets the distance between this vector and another + float dist(const Vector3f& other) const; + + /* !Determines the midpoint between 2 points in a 3D space + * + **/ + static Vector3f determineMidpoint(Vector3f a, Vector3f b); + +public: + float x; // x-axis coordinate + float y; // y-axis coordinate + float z; // z-axis coordinate + +}; + +#endif // VECTOR3F_H diff --git a/cpp/localization/World.h b/cpp/localization/World.h new file mode 100644 index 0000000..5a62b5f --- /dev/null +++ b/cpp/localization/World.h @@ -0,0 +1,56 @@ +/** + * FILENAME: World + * DESCRIPTION: World data from Python + * AUTHOR: Miguel Abreu (m.abreu@fe.up.pt) + * DATE: 2021 + */ + +#pragma once +#include "Vector3f.h" +#include "Singleton.h" +#include "Matrix4D.h" +#include "Line6f.h" +#include +#include + +using namespace std; + + +class World { + friend class Singleton; + +private: + + World(){}; + +public: + + //Feet variables: (0) left, (1) right + bool foot_touch[2]; // is foot touching ground + Vector3f foot_contact_rel_pos[2]; // foot_transform * translation(foot_contact_pt) + + bool ball_seen; + Vector3f ball_rel_pos_cart; + Vector3f ball_cheat_abs_cart_pos; + Vector3f my_cheat_abs_cart_pos; + + struct sLMark { + bool seen; + bool isCorner; + Vector3f pos; + Vector3f rel_pos; + }; + + sLMark landmark[8]; + + struct sLine { + Vector3f start, end; + sLine(const Vector3f& s, const Vector3f& e) : start(s), end(e) {}; + }; + + vector lines_polar; + + +}; + +typedef Singleton SWorld; \ No newline at end of file diff --git a/cpp/localization/debug_main.cc b/cpp/localization/debug_main.cc new file mode 100644 index 0000000..423a7f2 --- /dev/null +++ b/cpp/localization/debug_main.cc @@ -0,0 +1,196 @@ +#include +#include "Geometry.h" +#include "Vector3f.h" +#include "Matrix4D.h" +#include "FieldNoise.h" +#include "Line6f.h" +#include "World.h" +#include "Field.h" +#include "LocalizerV2.h" + +using namespace std; + +static LocalizerV2& loc = SLocalizerV2::getInstance(); + +void print_python_data(){ + + static World &world = SWorld::getInstance(); + + cout << "Foot touch: " << world.foot_touch[0] << " " << world.foot_touch[1] << endl; + cout << "LFoot contact rpos: " << world.foot_contact_rel_pos[0].x << " " << world.foot_contact_rel_pos[0].y << " " << world.foot_contact_rel_pos[0].z << endl; + cout << "RFoot contact rpos: " << world.foot_contact_rel_pos[1].x << " " << world.foot_contact_rel_pos[1].y << " " << world.foot_contact_rel_pos[1].z << endl; + cout << "Ball seen: " << world.ball_seen << endl; + cout << "Ball rpos cart: " << world.ball_rel_pos_cart.x << " " << world.ball_rel_pos_cart.y << " " << world.ball_rel_pos_cart.z << endl; + cout << "Ball cheat: " << world.ball_cheat_abs_cart_pos.x << " " << world.ball_cheat_abs_cart_pos.y << " " << world.ball_cheat_abs_cart_pos.z << endl; + cout << "Me cheat: " << world.my_cheat_abs_cart_pos.x << " " << world.my_cheat_abs_cart_pos.y << " " << world.my_cheat_abs_cart_pos.z << endl; + + for(int i=0; i<8; i++){ + cout << "Landmark " << i << ": " << + world.landmark[i].seen << " " << + world.landmark[i].isCorner << " " << + world.landmark[i].pos.x << " " << + world.landmark[i].pos.y << " " << + world.landmark[i].pos.z << " " << + world.landmark[i].rel_pos.x << " " << + world.landmark[i].rel_pos.y << " " << + world.landmark[i].rel_pos.z << endl; + } + + for(int i=0; i +#include "Geometry.h" +#include "Vector3f.h" +#include "Matrix4D.h" +#include "FieldNoise.h" +#include "Line6f.h" +#include "World.h" +#include "Field.h" +#include "LocalizerV2.h" +#include +#include + +namespace py = pybind11; +using namespace std; + +static LocalizerV2& loc = SLocalizerV2::getInstance(); + +void print_python_data(){ + + static World &world = SWorld::getInstance(); + + cout << "Foot touch: " << world.foot_touch[0] << " " << world.foot_touch[1] << endl; + cout << "LFoot contact rpos: " << world.foot_contact_rel_pos[0].x << " " << world.foot_contact_rel_pos[0].y << " " << world.foot_contact_rel_pos[0].z << endl; + cout << "RFoot contact rpos: " << world.foot_contact_rel_pos[1].x << " " << world.foot_contact_rel_pos[1].y << " " << world.foot_contact_rel_pos[1].z << endl; + cout << "Ball seen: " << world.ball_seen << endl; + cout << "Ball rpos cart: " << world.ball_rel_pos_cart.x << " " << world.ball_rel_pos_cart.y << " " << world.ball_rel_pos_cart.z << endl; + cout << "Ball cheat: " << world.ball_cheat_abs_cart_pos.x << " " << world.ball_cheat_abs_cart_pos.y << " " << world.ball_cheat_abs_cart_pos.z << endl; + cout << "Me cheat: " << world.my_cheat_abs_cart_pos.x << " " << world.my_cheat_abs_cart_pos.y << " " << world.my_cheat_abs_cart_pos.z << endl; + + for(int i=0; i<8; i++){ + cout << "Landmark " << i << ": " << + world.landmark[i].seen << " " << + world.landmark[i].isCorner << " " << + world.landmark[i].pos.x << " " << + world.landmark[i].pos.y << " " << + world.landmark[i].pos.z << " " << + world.landmark[i].rel_pos.x << " " << + world.landmark[i].rel_pos.y << " " << + world.landmark[i].rel_pos.z << endl; + } + + for(int i=0; i compute( + bool lfoot_touch, bool rfoot_touch, + py::array_t feet_contact, + bool ball_seen, py::array_t ball_pos, + py::array_t me_pos, + py::array_t landmarks, + py::array_t lines){ + + // ================================================= 1. Parse data + + static World &world = SWorld::getInstance(); + world.foot_touch[0] = lfoot_touch; + world.foot_touch[1] = rfoot_touch; + + //Structure of feet_contact {lfoot_contact_pt, rfoot_contact_pt, lfoot_contact_rel_pos, rfoot_contact_rel_pos} + + py::buffer_info feet_contact_buf = feet_contact.request(); + double *feet_contact_ptr = (double *) feet_contact_buf.ptr; + world.foot_contact_rel_pos[0].x = feet_contact_ptr[0]; + world.foot_contact_rel_pos[0].y = feet_contact_ptr[1]; + world.foot_contact_rel_pos[0].z = feet_contact_ptr[2]; + world.foot_contact_rel_pos[1].x = feet_contact_ptr[3]; + world.foot_contact_rel_pos[1].y = feet_contact_ptr[4]; + world.foot_contact_rel_pos[1].z = feet_contact_ptr[5]; + + world.ball_seen = ball_seen; + + //Structure of ball_pos {ball_rel_pos_cart, ball_cheat_abs_cart_pos} + + py::buffer_info ball_pos_buf = ball_pos.request(); + double *ball_pos_ptr = (double *) ball_pos_buf.ptr; + world.ball_rel_pos_cart.x = ball_pos_ptr[0]; + world.ball_rel_pos_cart.y = ball_pos_ptr[1]; + world.ball_rel_pos_cart.z = ball_pos_ptr[2]; + world.ball_cheat_abs_cart_pos.x = ball_pos_ptr[3]; + world.ball_cheat_abs_cart_pos.y = ball_pos_ptr[4]; + world.ball_cheat_abs_cart_pos.z = ball_pos_ptr[5]; + + py::buffer_info me_pos_buf = me_pos.request(); + double *me_pos_ptr = (double *) me_pos_buf.ptr; + world.my_cheat_abs_cart_pos.x = me_pos_ptr[0]; + world.my_cheat_abs_cart_pos.y = me_pos_ptr[1]; + world.my_cheat_abs_cart_pos.z = me_pos_ptr[2]; + + py::buffer_info landmarks_buf = landmarks.request(); + double *landmarks_ptr = (double *) landmarks_buf.ptr; + + for(int i=0; i<8; i++){ + world.landmark[i].seen = (bool) landmarks_ptr[0]; + world.landmark[i].isCorner = (bool) landmarks_ptr[1]; + world.landmark[i].pos.x = landmarks_ptr[2]; + world.landmark[i].pos.y = landmarks_ptr[3]; + world.landmark[i].pos.z = landmarks_ptr[4]; + world.landmark[i].rel_pos.x = landmarks_ptr[5]; + world.landmark[i].rel_pos.y = landmarks_ptr[6]; + world.landmark[i].rel_pos.z = landmarks_ptr[7]; + landmarks_ptr += 8; + } + + py::buffer_info lines_buf = lines.request(); + int lines_len = lines_buf.shape[0]; + double *lines_ptr = (double *) lines_buf.ptr; + world.lines_polar.clear(); + + for(int i=0; i retval = py::array_t(35); //allocate + py::buffer_info buff = retval.request(); + float *ptr = (float *) buff.ptr; + + for(int i=0; i<16; i++){ + ptr[i] = loc.headTofieldTransform.content[i]; + } + ptr += 16; + for(int i=0; i<16; i++){ + ptr[i] = loc.fieldToheadTransform.content[i]; + } + ptr += 16; + + ptr[0] = (float) loc.is_uptodate; + ptr[1] = loc.head_z; + ptr[2] = (float) loc.is_head_z_uptodate; + + + return retval; +} + +void print_report(){ + loc.print_report(); +} + +void draw_visible_elements(bool is_right_side){ + Field& fd = SField::getInstance(); + fd.draw_visible(loc.headTofieldTransform, is_right_side); +} + + +using namespace pybind11::literals; //to add informative argument names as -> "argname"_a + +PYBIND11_MODULE(localization, m) { //the python module name, m is the interface to create bindings + m.doc() = "Probabilistic 6D localization algorithm"; // optional module docstring + + //optional arguments names + m.def("compute", &compute, "Compute the 6D pose based on visual information and return transformation matrices and other relevant data", + "lfoot_touch"_a, + "rfoot_touch"_a, + "feet_contact"_a, + "ball_seen"_a, + "ball_pos"_a, + "me_pos"_a, + "landmarks"_a, + "lines"_a); + + m.def("print_python_data", &print_python_data, "Print data received from Python"); + m.def("print_report", &print_report, "Print localization report"); + m.def("draw_visible_elements", &draw_visible_elements, "Draw all visible elements in RoboViz", "is_right_side"_a); + +} + diff --git a/cpp/localization/localization.c_info b/cpp/localization/localization.c_info new file mode 100644 index 0000000000000000000000000000000000000000..026800455120ec5cce154339c9337b75c4310455 GIT binary patch literal 25 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%0D(bx_-Fy}pCm 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 +#include +#include + +using namespace std; + +inline int writeCharToBuf(unsigned char* buf, unsigned char value) { + *buf = value; + return 1; +} + +inline int writeFloatToBuf(unsigned char* buf, float value) { + char temp[20]; + sprintf(temp, "%6f", value); + memcpy(buf, temp, 6); + return 6; +} + +inline int writeColorToBuf(unsigned char* buf, const float* color, int channels) { + int i; + for (i = 0; i < channels; i++) + writeCharToBuf(buf + i, (unsigned char) (color[i]*255)); + return i; +} + +inline int writeStringToBuf(unsigned char* buf, const string* text) { + long i = 0; + if (text != NULL) + i += text->copy((char*) buf + i, text->length(), 0); + i += writeCharToBuf(buf + i, 0); + return i; +} + +unsigned char* newBufferSwap(const string* name, int* bufSize) { + *bufSize = 3 + ((name != NULL) ? name->length() : 0); + unsigned char* buf = new unsigned char[*bufSize]; + + long i = 0; + i += writeCharToBuf(buf + i, 0); + i += writeCharToBuf(buf + i, 0); + i += writeStringToBuf(buf + i, name); + + return buf; +} + +unsigned char* newCircle(const float* center, float radius, float thickness, + const float* color, const string* setName, int* bufSize) { + + *bufSize = 30 + ((setName != NULL) ? setName->length() : 0); + unsigned char* buf = new unsigned char[*bufSize]; + + long i = 0; + i += writeCharToBuf(buf + i, 1); + i += writeCharToBuf(buf + i, 0); + i += writeFloatToBuf(buf + i, center[0]); + i += writeFloatToBuf(buf + i, center[1]); + i += writeFloatToBuf(buf + i, radius); + i += writeFloatToBuf(buf + i, thickness); + i += writeColorToBuf(buf + i, color, 3); + i += writeStringToBuf(buf + i, setName); + + return buf; +} + +unsigned char* newLine(const float* a, const float* b, float thickness, + const float* color, const string* setName, int* bufSize) { + + *bufSize = 48 + ((setName != NULL) ? setName->length() : 0); + unsigned char* buf = new unsigned char[*bufSize]; + + long i = 0; + i += writeCharToBuf(buf + i, 1); + i += writeCharToBuf(buf + i, 1); + i += writeFloatToBuf(buf + i, a[0]); + i += writeFloatToBuf(buf + i, a[1]); + i += writeFloatToBuf(buf + i, a[2]); + i += writeFloatToBuf(buf + i, b[0]); + i += writeFloatToBuf(buf + i, b[1]); + i += writeFloatToBuf(buf + i, b[2]); + i += writeFloatToBuf(buf + i, thickness); + i += writeColorToBuf(buf + i, color, 3); + i += writeStringToBuf(buf + i, setName); + + return buf; +} + +unsigned char* newPoint(const float* p, float size, const float* color, + const string* setName, int* bufSize) { + + *bufSize = 30 + ((setName != NULL) ? setName->length() : 0); + unsigned char* buf = new unsigned char[*bufSize]; + + long i = 0; + i += writeCharToBuf(buf + i, 1); + i += writeCharToBuf(buf + i, 2); + i += writeFloatToBuf(buf + i, p[0]); + i += writeFloatToBuf(buf + i, p[1]); + i += writeFloatToBuf(buf + i, p[2]); + i += writeFloatToBuf(buf + i, size); + i += writeColorToBuf(buf + i, color, 3); + i += writeStringToBuf(buf + i, setName); + + return buf; +} + +unsigned char* newSphere(const float* p, float radius, const float* color, + const string* setName, int* bufSize) { + + *bufSize = 30 + ((setName != NULL) ? setName->length() : 0); + unsigned char* buf = new unsigned char[*bufSize]; + + long i = 0; + i += writeCharToBuf(buf + i, 1); + i += writeCharToBuf(buf + i, 3); + i += writeFloatToBuf(buf + i, p[0]); + i += writeFloatToBuf(buf + i, p[1]); + i += writeFloatToBuf(buf + i, p[2]); + i += writeFloatToBuf(buf + i, radius); + i += writeColorToBuf(buf + i, color, 3); + i += writeStringToBuf(buf + i, setName); + + return buf; +} + +unsigned char* newPolygon(const float* v, int numVerts, const float* color, + const string* setName, int* bufSize) { + + *bufSize = 18 * numVerts + 8 + ((setName != NULL) ? setName->length() : 0); + unsigned char* buf = new unsigned char[*bufSize]; + + long i = 0; + i += writeCharToBuf(buf + i, 1); + i += writeCharToBuf(buf + i, 4); + i += writeCharToBuf(buf + i, numVerts); + i += writeColorToBuf(buf + i, color, 4); + + for (int j = 0; j < numVerts; j++) { + i += writeFloatToBuf(buf + i, v[j * 3 + 0]); + i += writeFloatToBuf(buf + i, v[j * 3 + 1]); + i += writeFloatToBuf(buf + i, v[j * 3 + 2]); + } + + i += writeStringToBuf(buf + i, setName); + + return buf; +} + +unsigned char* newAnnotation(const string* text, const float* p, + const float* color, const string* setName, int* bufSize) { + + *bufSize = 25 + text->length() + ((setName != NULL) ? setName->length() : 0); + unsigned char* buf = new unsigned char[*bufSize]; + + long i = 0; + i += writeCharToBuf(buf + i, 2); + i += writeCharToBuf(buf + i, 0); + i += writeFloatToBuf(buf + i, p[0]); + i += writeFloatToBuf(buf + i, p[1]); + i += writeFloatToBuf(buf + i, p[2]); + i += writeColorToBuf(buf + i, color, 3); + i += writeStringToBuf(buf + i, text); + i += writeStringToBuf(buf + i, setName); + + return buf; +} + +unsigned char* newAgentAnnotation(const string* text, bool leftTeam, + int agentNum, const float* color, int* bufSize) { + + *bufSize = (text == NULL) ? 3 : 7 + text->length(); + unsigned char* buf = new unsigned char[*bufSize]; + + long i = 0; + i += writeCharToBuf(buf + i, 2); + + if (text == NULL) { + i += writeCharToBuf(buf + i, 2); + i += writeCharToBuf(buf + i, (leftTeam ? agentNum - 1 : agentNum + 127)); + } else { + i += writeCharToBuf(buf + i, 1); + i += writeCharToBuf(buf + i, (leftTeam ? agentNum - 1 : agentNum + 127)); + i += writeColorToBuf(buf + i, color, 3); + i += writeStringToBuf(buf + i, text); + } + + return buf; +} + +#endif diff --git a/example.py b/example.py new file mode 100644 index 0000000..261de1a --- /dev/null +++ b/example.py @@ -0,0 +1,48 @@ +from agent.Base_Agent import Base_Agent as Agent + +# Args: Server IP, Agent Port, Monitor Port, Uniform No., Robot Type, Team Name +player = Agent("localhost", 3100, 3200, 7, 4, "TeamName") + +w = player.world + + +def kick(self, kick_direction=None, kick_distance=None, abort=False, enable_pass_command=False): + ''' + Walk to ball and kick + + Parameters + ---------- + kick_direction : float + kick direction, in degrees, relative to the field + kick_distance : float + kick distance in meters + abort : bool + True to abort. + The method returns True upon successful abortion, which is immediate while the robot is aligning itself. + However, if the abortion is requested during the kick, it is delayed until the kick is completed. + avoid_pass_command : bool + When False, the pass command will be used when at least one opponent is near the ball + + Returns + ------- + finished : bool + Returns True if the behavior finished or was successfully aborted. + ''' + + if self.min_opponent_ball_dist < 1.45 and enable_pass_command: + self.scom.commit_pass_command() + + self.kick_direction = self.kick_direction if kick_direction is None else kick_direction + self.kick_distance = self.kick_distance if kick_distance is None else kick_distance + + if self.fat_proxy_cmd is None: # normal behavior + return self.behavior.execute("Basic_Kick", self.kick_direction, + abort) # Basic_Kick has no kick distance control + else: # fat proxy behavior + return self.fat_proxy_kick() + + +while True: + player.behavior.execute("Nerul_Kick", True, 0) + player.scom.commit_and_send(w.robot.get_command()) + player.scom.receive() diff --git a/kill.sh b/kill.sh new file mode 100755 index 0000000..c941e1f --- /dev/null +++ b/kill.sh @@ -0,0 +1,2 @@ +#!/bin/bash +pkill -9 -e -f "python3 ./Run_" diff --git a/logs/2025-09-26_10.39.28__RRPVPH/Gym_1.log b/logs/2025-09-26_10.39.28__RRPVPH/Gym_1.log new file mode 100644 index 0000000..d4e3207 --- /dev/null +++ b/logs/2025-09-26_10.39.28__RRPVPH/Gym_1.log @@ -0,0 +1,2 @@ +{Fri 10:39:28 Step:1853} World_Parser.py: Received field line with NaNs [10.92 55.66 17.61 nan nan nan] +{Fri 10:40:07 Step:8767} World_Parser.py: Received field line with NaNs [ 7.51 -56.21 18.71 nan nan nan] diff --git a/logs/2025-11-04_20.30.48__CWVDGG/Gym_1.log b/logs/2025-11-04_20.30.48__CWVDGG/Gym_1.log new file mode 100644 index 0000000..ee5d994 --- /dev/null +++ b/logs/2025-11-04_20.30.48__CWVDGG/Gym_1.log @@ -0,0 +1,8 @@ +{Tue 20:30:48 Step:3} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:48 Step:5} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:48 Step:5} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:48 Step:8} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:30:48 Step:9} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:48 Step:11} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:48 Step:11} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:48 Step:14} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? diff --git a/logs/2025-11-04_20.30.49__ACGLGO/Gym_1.log b/logs/2025-11-04_20.30.49__ACGLGO/Gym_1.log new file mode 100644 index 0000000..202835c --- /dev/null +++ b/logs/2025-11-04_20.30.49__ACGLGO/Gym_1.log @@ -0,0 +1,56 @@ +{Tue 20:30:49 Step:3} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:49 Step:5} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:49 Step:5} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:49 Step:7} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:49 Step:7} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:49 Step:9} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:49 Step:9} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:49 Step:11} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:49 Step:11} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:49 Step:13} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:49 Step:13} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:49 Step:15} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:49 Step:15} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:49 Step:17} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:49 Step:17} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:49 Step:19} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:49 Step:19} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:49 Step:21} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:49 Step:21} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:49 Step:23} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:49 Step:23} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:49 Step:25} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:49 Step:25} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:49 Step:27} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:49 Step:27} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:49 Step:29} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:49 Step:29} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:49 Step:31} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:49 Step:31} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:49 Step:33} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:49 Step:33} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:49 Step:35} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:49 Step:35} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:49 Step:37} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:49 Step:37} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:49 Step:39} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:49 Step:41} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:49 Step:41} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:49 Step:43} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:49 Step:43} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:49 Step:45} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:50 Step:45} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:50 Step:47} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:50 Step:47} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:50 Step:49} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:50 Step:49} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:50 Step:51} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:50 Step:51} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:50 Step:53} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:50 Step:53} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:50 Step:55} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:50 Step:55} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:50 Step:57} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:50 Step:57} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:50 Step:59} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:50 Step:59} Server_Comm.py: Received a new packet while on world.update()! diff --git a/logs/2025-11-04_20.30.49__HFYGJP/Gym_1.log b/logs/2025-11-04_20.30.49__HFYGJP/Gym_1.log new file mode 100644 index 0000000..910869b --- /dev/null +++ b/logs/2025-11-04_20.30.49__HFYGJP/Gym_1.log @@ -0,0 +1,8 @@ +{Tue 20:30:49 Step:5} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:49 Step:7} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:49 Step:7} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:49 Step:9} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:50 Step:9} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:50 Step:11} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:30:50 Step:11} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:30:50 Step:14} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? diff --git a/logs/2025-11-04_20.31.56__CDAPGK/Gym_1.log b/logs/2025-11-04_20.31.56__CDAPGK/Gym_1.log new file mode 100644 index 0000000..ab3de82 --- /dev/null +++ b/logs/2025-11-04_20.31.56__CDAPGK/Gym_1.log @@ -0,0 +1,936 @@ +{Tue 20:31:56 Step:1} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:5} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:7} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:56 Step:7} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:10} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:31:57 Step:11} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:57 Step:13} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:57 Step:13} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:57 Step:16} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:05 Step:16} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:06 Step:455} Server_Comm.py: The agent lost 438 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:457} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:457} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:460} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:463} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:466} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:474} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:475} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:477} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:477} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:479} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:482} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:483} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:486} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:487} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:489} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:492} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:498} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:499} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:501} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:501} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:504} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:505} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:507} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:507} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:510} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:513} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:515} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:518} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:522} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:526} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:527} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:530} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:531} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:533} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:536} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:539} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:542} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:549} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:552} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:555} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:558} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:561} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:564} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:564} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:567} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:570} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:574} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:577} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:581} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:586} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:591} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:595} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:599} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:603} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:608} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:613} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:617} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:622} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:626} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:626} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:10 Step:627} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:629} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:629} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:633} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:10 Step:633} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:636} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:10 Step:669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:673} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:677} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:679} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:685} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:688} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:11 Step:691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:693} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:695} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:698} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:11 Step:699} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:701} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:703} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:706} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:11 Step:707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:709} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:712} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:11 Step:713} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:715} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:717} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:721} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:723} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:723} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:725} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:725} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:727} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:729} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:729} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:731} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:731} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:734} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:12 Step:735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:737} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:741} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:12 Step:743} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:746} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:12 Step:747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:749} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:751} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:753} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:753} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:755} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:757} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:767} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:773} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:773} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:775} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:777} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:780} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:13 Step:781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:786} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:13 Step:789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:791} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:793} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:795} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:795} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:797} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:797} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:799} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:799} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:802} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:13 Step:803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:805} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:807} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:807} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:809} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:809} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:812} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:14 Step:817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:819} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:821} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:821} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:823} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:825} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:894} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:15 Step:895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:897} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:901} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:15 Step:901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:904} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:16 Step:909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:911} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:915} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:919} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:923} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:925} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:925} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:927} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:927} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:930} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:16 Step:930} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:16 Step:931} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:933} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:935} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:935} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:945} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:947} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:953} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:991} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:993} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:993} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:996} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:999} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:999} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1002} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:18 Step:1003} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1005} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1005} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1007} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1013} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1015} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1017} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1017} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1027} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 396.58))(GS (sl 0) (sr 0) (t 87.96) (pm PlayOn))(foul 7)(GYR (n torso) (rt 361.85 21.20 8.93))(ACC (n torso) (a 2.36 5.98 15.04))(HJ (n hj1) (ax 42.01))(HJ (n hj2) (ax -41.91))(See (P (team Gym) (id 1) (rlowerarm (pol 0.28 -42.56 -48.01)) (llowerarm (pol 0.28 6.76 -25.23)) (rfoot (pol 0.49 -25.50 -46.47)) (lfoot (pol 0.50 -4.57 -37.89))) (G2R (pol 25.00 49.86 31.35)) (G1R (pol 25.10 55.30 33.72)) (F2L (pol 10.43 -52.26 -39.54)) (F2R (pol 26.60 33.24 18.86)) (mypos -9.99 -0.87 0.20) (myorien -57.18) (ballpos -9.00 0.00 0.04) (L (pol 13.54 15.98 4.02) (pol 10.08 59.81 32.92)) (L (pol 26.60 33.39 19.05) (pol 25.25 60.10 33.58)) (L (pol 10.41 -52.40 -39.21) (pol 8.83 -59.81 -41.28)) (L (pol 26.64 32.98 18.86) (pol 10.41 -52.30 -39.42)) (L (pol 23.42 60.09 33.68) (pol 23.32 46.42 27.13)) (L (pol 23.26 46.59 27.44) (pol 25.07 46.55 27.55)) (L (pol 12.02 55.83 31.58) (pol 11.84 59.96 33.05)) (L (pol 8.13 59.90 32.54) (pol 8.04 58.32 31.96)) (L (pol 8.04 58.33 32.14) (pol 8.37 50.41 28.06)) (L (pol 8.40 49.84 28.06) (pol 9.42 45.73 26.14)) (L (pol 9.44 45.74 26.45) (pol 10.67 46.53 26.72)) (L (pol 10.65 46.26 26.65) (pol 11.59 50.27 28.64)) (L (pol 11.62 50.28 28.70) (pol 12.02 56.21 31.72)))(HJ (n raj1) (ax -82.95))(HJ (n raj2) (ax -6.93))(HJ (n raj3) (ax 67.10))(HJ (n raj4) (ax 35.12))(HJ (n laj1) (ax -82.95))(HJ (n laj2) (ax 7.55))(HJ (n laj3) (ax -67.06))(HJ (n laj4) (ax -35.11))(HJ (n rlj1) (ax -13.26))(HJ (n rlj2) (ax -7.04))(HJ (n rlj3) (ax 64.72))(HJ (n rlj4) (ax -100.34))(HJ (n rlj5) (ax 11.12))(FRP (n rf) (c 0.05 -0.08 -0.01) (f 53.33 13.75 8.37))(HJ (n rlj6) (ax 7.55))(HJ (n llj1) (ax -12.83))(HJ (n llj2) (ax -3.12))(HJ (n llj3) (ax 63.99))(HJ (n llj4) (ax -90.66))(HJ (n llj5) (ax -23.98))(FRP (n lf) (c -0.05 -0.08 -0.01) (f -51.73 -0.32 19.38))(HJ (n llj6) (ax 3.46)) +{Tue 20:32:18 Step:1027} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1029} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1031} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1031} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1034} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:18 Step:1035} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1037} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1137} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1140} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:20 Step:1141} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1144} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1149} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1152} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1153} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1156} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1156} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:21 Step:1157} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1160} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1163} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1166} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1166} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1167} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1170} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1171} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1173} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1173} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1175} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1175} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1177} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1177} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1180} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1181} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1183} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1183} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1185} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1187} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1187} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1189} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1193} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1195} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1197} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1197} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1199} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1199} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1203} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:22 Step:1203} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1206} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:22 Step:1207} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1209} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1209} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1211} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1213} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1213} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1215} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1279} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1281} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1281} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1283} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1283} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1286} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:23 Step:1287} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1289} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1291} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1291} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1294} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1294} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1295} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1297} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1299} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1303} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1305} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1305} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1307} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1307} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1311} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1311} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1313} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1313} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1316} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1317} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1319} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1319} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1323} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1323} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1326} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:25 Step:1337} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:25 Step:1339} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1342} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:25 Step:1343} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1346} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:25 Step:1347} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1349} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1349} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1352} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:25 Step:1353} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1355} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1355} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1358} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1389} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:26 Step:1391} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1391} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1393} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1393} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1395} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1395} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1397} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1397} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1399} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1399} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1401} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1401} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1403} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1403} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1405} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1405} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1408} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1413} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1415} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1415} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1418} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1418} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1419} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1421} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1421} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1424} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1425} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1427} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1427} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1431} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1435} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1438} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1441} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:27 Step:1441} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1444} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1445} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1448} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1448} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1449} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1452} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1453} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1457} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1457} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1462} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1467} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1473} Server_Comm.py: The agent lost 5 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1475} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:27 Step:1475} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1479} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1481} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:28 Step:1481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1486} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1487} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1490} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1496} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1497} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1500} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1501} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1504} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1505} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1509} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1541} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1543} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1543} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1546} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1549} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1553} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1571} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1576} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1580} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1584} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1588} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1592} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1595} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:30 Step:1595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1597} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:30 Step:1597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1600} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1601} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1603} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:30 Step:1603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1606} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1613} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:30 Step:1613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1616} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1619} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:31 Step:1619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1621} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:31 Step:1621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1624} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1653} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:31 Step:1653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1655} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:31 Step:1655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1663} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:31 Step:1663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1665} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:31 Step:1665} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1667} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1669} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1671} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1673} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1675} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1683} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1685} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1687} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1689} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1689} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1692} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:32 Step:1693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1695} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1696} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 409.95))(GS (sl 0) (sr 0) (t 101.34) (pm PlayOn))(foul 7)(GYR (n torso) (rt 188.59 108.44 0.19))(ACC (n torso) (a -10.91 10.99 -2.64))(HJ (n hj1) (ax -20.73))(HJ (n hj2) (ax -21.62))(HJ (n raj1) (ax -66.43))(HJ (n raj2) (ax -1.80))(HJ (n raj3) (ax 65.30))(HJ (n raj4) (ax 89.99))(HJ (n laj1) (ax -66.45))(HJ (n laj2) (ax 5.55))(HJ (n laj3) (ax -65.28))(HJ (n laj4) (ax 1.30))(HJ (n rlj1) (ax -25.40))(HJ (n rlj2) (ax -2.93))(HJ (n rlj3) (ax 76.25))(HJ (n rlj4) (ax -88.61))(HJ (n rlj5) (ax 48.59))(HJ (n rlj6) (ax 43.87))(HJ (n llj1) (ax -24.29))(HJ (n llj2) (ax 45.09))(HJ (n llj3) (ax 94.36))(HJ (n llj4) (ax -85.84))(HJ (n llj5) (ax 48.52))(HJ (n llj6) (ax -44.12)) +{Tue 20:32:32 Step:1697} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1699} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1699} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1702} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:32 Step:1703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1705} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1708} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1711} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1713} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:34 Step:1787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1789} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:34 Step:1803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1807} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1807} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1810} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:35 Step:1811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1817} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1820} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:35 Step:1821} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1823} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1823} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1825} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1825} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1830} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:35 Step:1835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1837} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1839} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1841} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1841} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1843} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1845} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1845} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1847} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1893} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1895} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1897} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1898} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1905} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1909} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1913} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1916} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1925} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1925} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1927} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1927} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1929} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1929} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1932} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1937} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1939} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1939} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1943} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1945} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:38 Step:1945} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1946} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1949} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:38 Step:1981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1984} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1985} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1987} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:38 Step:1987} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1989} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:1989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1991} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 415.85))(GS (sl 0) (sr 0) (t 107.23) (pm PlayOn))(foul 7)(GYR (n torso) (rt 338.53 -6.73 -126.00))(ACC (n torso) (a -3.34 10.80 11.23))(HJ (n hj1) (ax -0.14))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.14 -30.47 8.43)) (llowerarm (pol 0.14 31.44 8.30))) (G1L (pol 5.85 -37.95 -36.46)) (G2L (pol 5.52 -12.16 -44.91)) (mypos -9.52 -0.90 0.22) (myorien -175.62) (ballpos -9.00 0.00 0.04) (L (pol 9.13 60.11 -39.70) (pol 6.91 -59.97 -30.35)) (L (pol 4.58 -59.99 -31.76) (pol 4.25 31.48 -53.11)) (L (pol 6.45 -59.86 -30.87) (pol 6.74 -58.51 -32.05)) (L (pol 4.25 31.74 -53.04) (pol 5.88 17.03 -54.59)))(HJ (n raj1) (ax 22.28))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 61.73))(HJ (n raj4) (ax 84.15))(HJ (n laj1) (ax 22.28))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax -61.73))(HJ (n laj4) (ax -84.06))(HJ (n rlj1) (ax -26.49))(HJ (n rlj2) (ax 20.27))(HJ (n rlj3) (ax 7.13))(HJ (n rlj4) (ax -6.56))(HJ (n rlj5) (ax 61.18))(FRP (n rf) (c -0.04 -0.08 0.02) (f 27.23 4.13 9.17))(HJ (n rlj6) (ax 47.22))(HJ (n llj1) (ax -29.62))(HJ (n llj2) (ax -17.89))(HJ (n llj3) (ax 4.88))(HJ (n llj4) (ax 0.98))(HJ (n llj5) (ax 61.09))(HJ (n llj6) (ax -47.20)) +{Tue 20:32:39 Step:1992} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:2077} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2079} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2079} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2082} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:2083} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2085} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2085} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2088} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:2089} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2091} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2091} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2094} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:2095} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2155} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2157} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2157} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2159} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2159} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2161} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2161} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2164} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:43 Step:2165} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2167} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2167} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2171} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2173} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2173} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2175} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2175} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2177} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2179} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2179} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2181} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2181} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2183} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2183} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2185} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2185} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2187} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2187} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2193} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:43 Step:2195} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2197} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2197} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2199} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2239} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2242} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2243} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2247} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 420.97))(GS (sl 0) (sr 0) (t 112.35) (pm PlayOn))(foul 7)(GYR (n torso) (rt 65.92 7.09 -31.88))(ACC (n torso) (a 1.58 9.18 3.72))(HJ (n hj1) (ax 0.08))(HJ (n hj2) (ax 0.04))(See (P (team Gym) (id 1) (rlowerarm (pol 0.15 -24.01 -5.99)) (llowerarm (pol 0.19 42.40 -4.42)) (rfoot (pol 0.46 -3.25 -59.11)) (lfoot (pol 0.46 3.63 -58.52))) (G1L (pol 5.84 -53.99 -19.80)) (G2L (pol 5.54 -33.04 -28.71)) (F2L (pol 10.73 35.07 -35.31)) (mypos -9.50 -0.82 0.25) (myorien -148.67) (ballpos -9.00 0.00 0.04) (L (pol 10.70 35.17 -35.25) (pol 5.87 -59.98 -25.42)) (L (pol 9.24 59.96 -24.16) (pol 10.71 34.87 -35.61)) (L (pol 3.94 -59.75 -27.21) (pol 4.32 -0.85 -43.01)) (L (pol 4.31 -0.84 -42.95) (pol 5.93 -12.80 -41.38)))(HJ (n raj1) (ax 8.31))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 47.79))(HJ (n raj4) (ax 84.00))(HJ (n laj1) (ax 8.31))(HJ (n laj2) (ax 27.03))(HJ (n laj3) (ax -47.69))(HJ (n laj4) (ax -84.18))(HJ (n rlj1) (ax -41.96))(HJ (n rlj2) (ax 26.22))(HJ (n rlj3) (ax 11.38))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax 52.76))(HJ (n rlj6) (ax 47.20))(HJ (n llj1) (ax -42.66))(HJ (n llj2) (ax -26.29))(HJ (n llj3) (ax 11.29))(HJ (n llj4) (ax 1.00))(HJ (n llj5) (ax 52.74))(HJ (n llj6) (ax -47.18)) +{Tue 20:32:44 Step:2247} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2249} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2249} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2252} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:46 Step:2333} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2336} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:46 Step:2337} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2339} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2342} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2345} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2347} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2347} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2349} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2351} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2353} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2353} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2356} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2357} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2359} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2359} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2361} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2361} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2364} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2365} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2368} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2369} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2371} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2373} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2373} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2376} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2377} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2379} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2379} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2382} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2383} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2386} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2387} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2390} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2391} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2394} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2395} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2397} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2399} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 424.01))(GS (sl 0) (sr 0) (t 115.39) (pm PlayOn))(foul 7)(GYR (n torso) (rt 142.25 21.31 -10.00))(ACC (n torso) (a 1.64 -7.92 23.33))(HJ (n hj1) (ax 43.81))(HJ (n hj2) (ax -30.63))(See (P (team Gym) (id 1) (llowerarm (pol 0.27 19.54 -38.65)) (lfoot (pol 0.45 -11.50 -23.49))) (G2L (pol 5.51 -47.39 -49.55)) (F2L (pol 10.66 -16.67 1.34)) (mypos -9.52 -0.86 0.23) (myorien -117.62) (ballpos -9.00 0.00 0.04) (L (pol 10.68 -16.59 1.55) (pol 5.48 -36.43 -54.36)) (L (pol 10.71 12.56 59.39) (pol 10.64 -16.58 1.25)) (L (pol 3.68 -34.61 -54.99) (pol 4.27 -22.65 -26.90)) (L (pol 4.27 -23.02 -26.84) (pol 5.89 -26.39 -35.02)))(HJ (n raj1) (ax -104.83))(HJ (n raj2) (ax -2.50))(HJ (n raj3) (ax 91.65))(HJ (n raj4) (ax 77.80))(HJ (n laj1) (ax -104.83))(HJ (n laj2) (ax 5.20))(HJ (n laj3) (ax -90.88))(HJ (n laj4) (ax -62.55))(HJ (n rlj1) (ax -20.24))(HJ (n rlj2) (ax -41.36))(HJ (n rlj3) (ax 29.48))(HJ (n rlj4) (ax -102.40))(HJ (n rlj5) (ax -37.70))(HJ (n rlj6) (ax 7.10))(HJ (n llj1) (ax -79.84))(HJ (n llj2) (ax -21.18))(HJ (n llj3) (ax 35.23))(HJ (n llj4) (ax -65.23))(HJ (n llj5) (ax 5.01))(HJ (n llj6) (ax -14.76)) +{Tue 20:32:48 Step:2399} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2401} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2401} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2403} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2403} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2405} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2405} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2406} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:48 Step:2407} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2409} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2411} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2414} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:50 Step:2489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2491} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2493} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2496} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:51 Step:2511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2513} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2516} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:51 Step:2517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2519} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2522} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:51 Step:2523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2525} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2528} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:51 Step:2529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2531} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2531} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2533} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2536} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:51 Step:2537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2540} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:51 Step:2543} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2545} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2547} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2549} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2587} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2592} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2596} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2601} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2601} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2603} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:53 Step:2603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2607} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2607} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2610} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2613} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:53 Step:2613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2615} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:53 Step:2619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2622} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2625} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:53 Step:2625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2627} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:53 Step:2627} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2630} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2631} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2633} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:53 Step:2633} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2635} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:53 Step:2635} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2638} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2639} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2641} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2643} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2646} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2650} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2650} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2655} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2657} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2661} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2663} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2666} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2666} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:54 Step:2667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2669} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:54 Step:2671} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2673} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2675} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2677} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2679} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2682} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:55 Step:2685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2688} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:55 Step:2689} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2691} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2759} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:56 Step:2759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2762} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:56 Step:2763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2765} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:56 Step:2765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2769} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2783} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2786} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2789} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2791} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2793} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2795} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2795} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2796} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 431.94))(GS (sl 0) (sr 0) (t 123.33) (pm PlayOn))(foul 7)(GYR (n torso) (rt -54.02 -403.46 397.11))(ACC (n torso) (a -5.05 -1.64 5.95))(HJ (n hj1) (ax 0.29))(HJ (n hj2) (ax -0.10))(HJ (n raj1) (ax -101.72))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 57.47))(HJ (n raj4) (ax 83.46))(HJ (n laj1) (ax -116.31))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax -57.58))(HJ (n laj4) (ax -83.66))(HJ (n rlj1) (ax 4.32))(HJ (n rlj2) (ax -25.64))(HJ (n rlj3) (ax 42.02))(HJ (n rlj4) (ax -85.02))(HJ (n rlj5) (ax 52.65))(FRP (n rf) (c -0.04 0.09 -0.01) (f -8.14 31.09 38.04))(HJ (n rlj6) (ax -18.19))(HJ (n llj1) (ax -3.50))(HJ (n llj2) (ax 28.24))(HJ (n llj3) (ax 99.11))(HJ (n llj4) (ax -90.06))(HJ (n llj5) (ax 45.88))(FRP (n lf) (c 0.04 -0.09 -0.01) (f 20.70 -21.94 44.72))(HJ (n llj6) (ax 18.06)) +{Tue 20:32:57 Step:2798} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2799} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2801} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2805} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2809} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2809} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2812} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2815} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2819} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2822} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2823} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2826} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:58 Step:2827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2829} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2829} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2832} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:58 Step:2833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2835} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2837} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2839} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2841} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2841} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2843} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2843} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2845} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2845} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2847} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2850} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:58 Step:2851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2853} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2853} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2855} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2855} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2858} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:58 Step:2859} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2863} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2869} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2869} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2871} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2874} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2875} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2877} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2879} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2879} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2882} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2899} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2903} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2906} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2910} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2914} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:33:00 Step:2915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2917} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2920} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:33:00 Step:2921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2923} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2926} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:33:00 Step:2927} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2929} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2929} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2932} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:33:00 Step:2933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2935} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2935} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2938} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:33:00 Step:2939} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2941} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2944} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:33:00 Step:2945} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2947} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2950} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:33:00 Step:2951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2953} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? diff --git a/logs/2025-11-04_20.31.56__FCJYEG/Gym_1.log b/logs/2025-11-04_20.31.56__FCJYEG/Gym_1.log new file mode 100644 index 0000000..c9e5c90 --- /dev/null +++ b/logs/2025-11-04_20.31.56__FCJYEG/Gym_1.log @@ -0,0 +1,888 @@ +{Tue 20:31:56 Step:1} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:5} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:9} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:31:56 Step:9} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:11} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:56 Step:11} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:14} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:31:56 Step:15} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:18} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:05 Step:18} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:06 Step:491} Server_Comm.py: The agent lost 472 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:493} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:523} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:525} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:527} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:527} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:535} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:538} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:541} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:544} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:547} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:550} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:554} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:557} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:559} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:566} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:570} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:570} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:573} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 385.99))(GS (sl 0) (sr 0) (t 75.08) (pm PlayOn))(foul 7)(GYR (n torso) (rt 99.79 -232.03 -33.54))(ACC (n torso) (a -3.48 -0.77 24.87))(HJ (n hj1) (ax -52.84))(HJ (n hj2) (ax -35.71))(See (P (team Gym) (id 1) (rlowerarm (pol 0.25 7.78 -8.73)) (lfoot (pol 0.45 8.34 -57.95))) (G2R (pol 25.89 55.22 22.74)) (G1R (pol 25.85 59.66 20.80)) (F2L (pol 11.62 -58.98 11.59)) (F2R (pol 28.01 35.12 27.18)) (B (pol 2.09 30.17 15.27)) (mypos -10.85 0.83 0.54) (myorien -55.33) (ballpos -9.00 0.00 0.04) (L (pol 15.32 10.00 29.59) (pol 10.88 60.00 17.00)) (L (pol 28.03 35.21 27.29) (pol 25.88 60.24 18.73)) (L (pol 11.63 -58.84 11.51) (pol 10.97 -59.86 10.77)) (L (pol 28.02 34.81 27.32) (pol 11.61 -59.05 11.60)) (L (pol 24.04 60.01 18.50) (pol 24.34 49.46 22.79)) (L (pol 24.32 49.41 22.80) (pol 26.16 50.07 22.64)) (L (pol 12.89 53.95 19.97) (pol 12.52 59.23 17.45)) (L (pol 12.49 59.19 17.43) (pol 12.25 60.07 17.13)) (L (pol 9.40 59.80 16.27) (pol 9.26 59.39 16.52)) (L (pol 9.26 59.52 16.39) (pol 8.91 51.98 19.26)) (L (pol 8.90 52.26 19.35) (pol 9.45 45.24 22.15)) (L (pol 9.47 45.20 21.86) (pol 10.61 42.94 23.05)) (L (pol 10.60 42.50 23.10) (pol 11.82 44.66 22.89)) (L (pol 11.80 44.34 23.31) (pol 12.65 48.93 21.83)) (L (pol 12.62 48.94 21.59) (pol 12.88 54.14 19.71)))(HJ (n raj1) (ax -55.89))(HJ (n raj2) (ax -6.94))(HJ (n raj3) (ax 90.21))(HJ (n raj4) (ax 70.00))(HJ (n laj1) (ax -122.28))(HJ (n laj2) (ax 5.17))(HJ (n laj3) (ax -90.51))(HJ (n laj4) (ax -70.00))(HJ (n rlj1) (ax -13.93))(HJ (n rlj2) (ax 28.85))(HJ (n rlj3) (ax 1.56))(HJ (n rlj4) (ax -69.89))(HJ (n rlj5) (ax 31.86))(FRP (n rf) (c 0.04 0.08 -0.01) (f -3.42 -34.24 106.04))(HJ (n rlj6) (ax -18.64))(HJ (n llj1) (ax -10.83))(HJ (n llj2) (ax 1.95))(HJ (n llj3) (ax 32.16))(HJ (n llj4) (ax -111.89))(HJ (n llj5) (ax 78.51))(HJ (n llj6) (ax -25.51)) +{Tue 20:32:07 Step:573} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:575} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:577} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:579} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:582} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:583} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:585} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:588} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:592} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:595} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:598} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:603} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:606} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:607} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:609} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:613} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:616} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:617} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 386.87))(GS (sl 0) (sr 0) (t 75.96) (pm PlayOn))(foul 7)(GYR (n torso) (rt -73.87 27.00 -46.71))(ACC (n torso) (a -8.68 -4.81 4.31))(HJ (n hj1) (ax -123.15))(HJ (n hj2) (ax 31.46))(See (G2L (pol 4.46 -45.87 -15.49)) (F2L (pol 10.97 -4.66 18.19)) (mypos -10.75 0.10 0.17) (myorien -123.60) (ballpos -9.00 0.00 0.04) (L (pol 10.96 -4.87 18.30) (pol 4.34 -60.03 -40.32)) (L (pol 11.65 48.92 48.49) (pol 10.98 -4.85 18.35)) (L (pol 2.51 -58.82 -41.91) (pol 3.97 -13.78 5.44)) (L (pol 3.97 -13.94 5.59) (pol 5.27 -23.96 -6.11)))(HJ (n raj1) (ax -111.96))(HJ (n raj2) (ax 12.79))(HJ (n raj3) (ax 43.32))(HJ (n raj4) (ax 70.00))(HJ (n laj1) (ax -122.55))(HJ (n laj2) (ax 2.97))(HJ (n laj3) (ax -124.47))(HJ (n laj4) (ax -70.00))(HJ (n rlj1) (ax -1.85))(HJ (n rlj2) (ax 31.11))(HJ (n rlj3) (ax -24.11))(HJ (n rlj4) (ax 0.20))(HJ (n rlj5) (ax -34.41))(HJ (n rlj6) (ax -27.13))(HJ (n llj1) (ax -13.99))(HJ (n llj2) (ax 1.62))(HJ (n llj3) (ax 30.55))(HJ (n llj4) (ax -125.95))(HJ (n llj5) (ax 78.92))(HJ (n llj6) (ax -44.44)) +{Tue 20:32:08 Step:617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:620} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:624} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:629} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:631} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:09 Step:631} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:634} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:635} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:637} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:719} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:721} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:729} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:732} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:11 Step:733} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:735} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:737} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:740} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:11 Step:741} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:743} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:746} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:11 Step:747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:749} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:752} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:11 Step:753} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:757} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:760} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:11 Step:761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:763} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:765} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:767} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:769} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:771} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:775} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:12 Step:775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:777} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:785} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:829} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:831} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:831} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:834} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:13 Step:835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:837} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:839} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:842} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:13 Step:843} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:845} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:845} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:847} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:849} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:849} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:851} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:853} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:853} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:856} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:13 Step:857} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:860} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:13 Step:861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:863} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:865} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:865} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:867} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:869} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:869} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:874} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:14 Step:875} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:877} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:880} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:14 Step:885} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:887} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:887} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:890} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:14 Step:891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:893} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:893} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:895} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:897} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:899} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:903} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 392.58))(GS (sl 0) (sr 0) (t 81.68) (pm PlayOn))(foul 7)(GYR (n torso) (rt 151.95 -11.80 -32.63))(ACC (n torso) (a -3.42 -9.27 26.52))(HJ (n hj1) (ax 82.47))(HJ (n hj2) (ax -51.97))(See (P (team Gym) (id 1) (rlowerarm (pol 0.25 -12.13 -53.18)) (llowerarm (pol 0.26 -2.05 0.80)) (rfoot (pol 0.40 -33.89 -35.67)) (lfoot (pol 0.39 -14.89 -29.51))) (G2R (pol 25.84 8.88 47.80)) (G1R (pol 25.72 9.10 52.22)) (F2L (pol 12.05 1.20 -58.07)) (F2R (pol 28.10 9.24 29.55)) (B (pol 2.10 9.07 16.79)) (mypos -10.70 1.23 0.09) (myorien -53.35) (ballpos -9.00 0.00 0.04) (L (pol 15.52 7.31 6.63) (pol 10.78 14.43 59.24)) (L (pol 28.09 8.90 29.18) (pol 25.88 13.60 59.51)) (L (pol 12.03 1.16 -58.02) (pol 10.97 0.57 -59.97)) (L (pol 28.01 8.94 29.09) (pol 12.03 1.03 -57.77)) (L (pol 24.00 13.00 56.86) (pol 24.25 10.48 42.75)) (L (pol 23.99 13.14 57.25) (pol 25.79 12.93 56.61)) (L (pol 24.26 10.50 42.84) (pol 26.06 10.70 43.46)) (L (pol 12.77 11.33 47.13) (pol 12.33 12.20 52.24)) (L (pol 12.33 12.34 52.36) (pol 11.33 13.07 56.00)) (L (pol 11.35 13.12 55.95) (pol 10.11 13.68 56.39)) (L (pol 10.11 13.39 56.55) (pol 9.08 12.56 52.20)) (L (pol 9.09 12.71 52.51) (pol 8.79 11.51 44.61)) (L (pol 8.80 11.41 44.57) (pol 9.40 10.00 37.91)) (L (pol 9.39 10.41 37.79) (pol 10.57 9.84 35.58)) (L (pol 10.55 10.06 35.65) (pol 11.75 10.29 37.32)) (L (pol 11.75 10.16 37.35) (pol 12.58 10.76 41.75)) (L (pol 12.55 10.62 41.70) (pol 12.79 11.68 47.32)))(HJ (n raj1) (ax -101.67))(HJ (n raj2) (ax 1.05))(HJ (n raj3) (ax 60.00))(HJ (n raj4) (ax 71.15))(HJ (n laj1) (ax -101.48))(HJ (n laj2) (ax 41.67))(HJ (n laj3) (ax -60.11))(HJ (n laj4) (ax -94.85))(HJ (n rlj1) (ax -13.08))(HJ (n rlj2) (ax 27.77))(HJ (n rlj3) (ax 82.06))(HJ (n rlj4) (ax -92.87))(HJ (n rlj5) (ax 78.24))(HJ (n rlj6) (ax -31.43))(HJ (n llj1) (ax -5.67))(HJ (n llj2) (ax 5.24))(HJ (n llj3) (ax 81.46))(HJ (n llj4) (ax -131.83))(HJ (n llj5) (ax 78.29))(HJ (n llj6) (ax -47.59)) +{Tue 20:32:14 Step:903} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:913} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:915} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:917} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:995} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:997} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:999} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:999} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:1001} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:1001} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:1011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:1013} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:1013} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:1016} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:1017} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:1019} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:1019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:1022} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:1023} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:1026} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:1027} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:1029} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:1029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:1031} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:1033} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:1033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:1036} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:1037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:1040} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:1043} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:17 Step:1045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:1047} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:1047} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:1049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:1051} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1087} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1089} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1089} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1091} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1091} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1095} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1097} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1097} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1099} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1099} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1101} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1101} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1104} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:18 Step:1107} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1109} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1111} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1113} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1113} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1115} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1115} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1117} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1119} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1119} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1122} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1231} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1234} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1235} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1237} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1237} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1239} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1245} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1247} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1250} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1251} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1253} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1255} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1255} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1258} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:22 Step:1259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1261} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1264} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:22 Step:1265} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1267} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 399.86))(GS (sl 0) (sr 0) (t 88.96) (pm PlayOn))(foul 7)(GYR (n torso) (rt 558.18 -208.57 -303.62))(ACC (n torso) (a 8.03 -1.21 -12.26))(HJ (n hj1) (ax 37.37))(HJ (n hj2) (ax -28.21))(See (P (team Gym) (id 1) (llowerarm (pol 0.29 19.14 -44.55)) (lfoot (pol 0.51 26.98 -40.69))) (G2R (pol 25.88 33.92 6.72)) (G1R (pol 25.75 36.89 10.14)) (F1R (pol 27.16 51.96 22.63)) (F2R (pol 28.13 22.94 -8.06)) (B (pol 2.23 16.68 -21.66)) (mypos -10.75 1.35 0.24) (myorien -33.76) (ballpos -9.00 0.00 0.04) (L (pol 15.63 6.41 -25.05) (pol 12.13 60.00 28.10)) (L (pol 28.15 22.73 -8.18) (pol 27.18 52.15 22.97)) (L (pol 27.16 52.09 22.60) (pol 18.51 60.03 28.58)) (L (pol 28.12 22.78 -8.38) (pol 11.40 -48.71 -48.67)) (L (pol 24.03 41.29 12.36) (pol 24.35 31.72 1.83)) (L (pol 24.03 41.28 12.35) (pol 25.75 41.11 12.22)) (L (pol 24.33 31.61 1.80) (pol 26.10 32.33 2.28)) (L (pol 12.82 35.00 4.53) (pol 12.38 38.60 8.46)) (L (pol 12.39 38.74 8.47) (pol 11.37 41.06 10.98)) (L (pol 11.40 40.99 10.93) (pol 10.15 41.52 11.30)) (L (pol 10.15 40.98 10.99) (pol 9.14 38.46 8.02)) (L (pol 9.15 38.64 7.84) (pol 8.86 33.34 2.40)) (L (pol 8.86 33.56 2.21) (pol 9.47 29.16 -2.78)) (L (pol 9.49 29.03 -2.63) (pol 10.65 27.50 -4.22)) (L (pol 10.66 27.28 -4.10) (pol 11.82 28.42 -2.97)) (L (pol 11.84 28.42 -2.84) (pol 12.62 31.24 0.46)) (L (pol 12.64 31.34 0.48) (pol 12.84 34.81 4.55)))(HJ (n raj1) (ax -88.51))(HJ (n raj2) (ax -5.24))(HJ (n raj3) (ax 94.81))(HJ (n raj4) (ax -1.58))(HJ (n laj1) (ax -88.51))(HJ (n laj2) (ax 1.32))(HJ (n laj3) (ax -94.78))(HJ (n laj4) (ax 1.15))(HJ (n rlj1) (ax 1.80))(HJ (n rlj2) (ax -25.37))(HJ (n rlj3) (ax 41.23))(HJ (n rlj4) (ax -95.64))(HJ (n rlj5) (ax -45.25))(HJ (n rlj6) (ax 45.18))(HJ (n llj1) (ax -9.98))(HJ (n llj2) (ax 51.47))(HJ (n llj3) (ax 40.52))(HJ (n llj4) (ax -67.82))(HJ (n llj5) (ax -45.69))(FRP (n lf) (c -0.05 -0.01 -0.01) (f -19.43 61.01 58.90))(HJ (n llj6) (ax -45.69)) +{Tue 20:32:22 Step:1267} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1267} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1270} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1365} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1367} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1367} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1371} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1373} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1373} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1376} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1379} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1382} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1383} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1385} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1385} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1387} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1387} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1389} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1389} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1393} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1393} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1395} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1395} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1398} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 402.48))(GS (sl 0) (sr 0) (t 91.58) (pm PlayOn))(foul 7)(GYR (n torso) (rt 85.69 -215.80 40.91))(ACC (n torso) (a 3.22 2.30 -8.29))(HJ (n hj1) (ax 0.18))(HJ (n hj2) (ax 0.00))(HJ (n raj1) (ax -71.80))(HJ (n raj2) (ax 5.28))(HJ (n raj3) (ax 38.77))(HJ (n raj4) (ax -0.99))(HJ (n laj1) (ax -71.80))(HJ (n laj2) (ax -4.64))(HJ (n laj3) (ax -38.48))(HJ (n laj4) (ax 1.22))(HJ (n rlj1) (ax -12.66))(HJ (n rlj2) (ax -39.46))(HJ (n rlj3) (ax 99.94))(HJ (n rlj4) (ax -110.59))(HJ (n rlj5) (ax -45.04))(HJ (n rlj6) (ax 45.88))(HJ (n llj1) (ax -2.79))(HJ (n llj2) (ax 45.68))(HJ (n llj3) (ax -27.31))(HJ (n llj4) (ax -125.12))(HJ (n llj5) (ax 62.11))(HJ (n llj6) (ax -45.83)) +{Tue 20:32:25 Step:1398} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:25 Step:1399} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1401} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1401} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1403} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1403} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1407} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:25 Step:1407} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1409} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1409} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1412} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:25 Step:1413} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1415} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1421} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1423} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1425} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1425} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1427} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:28 Step:1517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1521} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1525} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1530} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1531} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1536} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1541} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1545} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1549} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1553} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1558} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1558} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1562} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1565} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1568} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1571} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1575} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1578} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1581} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1584} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1584} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1588} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1591} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1594} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1597} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1600} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1601} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1603} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1605} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:30 Step:1605} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1608} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1608} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1611} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:30 Step:1611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1616} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1620} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1623} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:30 Step:1623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1626} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1627} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1630} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1631} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1633} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:30 Step:1633} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1637} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1637} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1639} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:30 Step:1639} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1641} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:30 Step:1641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1644} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1645} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1648} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1648} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1653} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1658} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1662} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1665} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1669} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:31 Step:1669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1672} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1675} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:31 Step:1675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1679} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:32 Step:1707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1709} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1710} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1711} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1713} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1715} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1718} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:32 Step:1719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1721} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1721} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1723} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1723} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1726} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:32 Step:1729} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1731} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1731} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1734} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:32 Step:1735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1737} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1740} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1741} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1744} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1747} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1749} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1752} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1753} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1755} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1757} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1760} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1763} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1767} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1770} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1770} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1773} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1777} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1780} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1783} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1787} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:34 Step:1787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1790} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:34 Step:1809} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 410.69))(GS (sl 0) (sr 0) (t 99.80) (pm PlayOn))(foul 7)(GYR (n torso) (rt 87.33 7.81 -36.89))(ACC (n torso) (a 0.98 6.93 2.58))(HJ (n hj1) (ax 7.40))(HJ (n hj2) (ax 2.59))(See (P (team Gym) (id 1) (rfoot (pol 0.52 -56.01 -59.21))) (mypos -10.17 0.74 0.06) (myorien -112.69) (ballpos -9.00 0.00 0.04))(HJ (n raj1) (ax -84.96))(HJ (n raj2) (ax -0.28))(HJ (n raj3) (ax 85.68))(HJ (n raj4) (ax 5.59))(HJ (n laj1) (ax -84.96))(HJ (n laj2) (ax 0.21))(HJ (n laj3) (ax -85.66))(HJ (n laj4) (ax -5.49))(HJ (n rlj1) (ax -82.68))(HJ (n rlj2) (ax -2.50))(HJ (n rlj3) (ax -1.50))(HJ (n rlj4) (ax -7.68))(HJ (n rlj5) (ax -2.67))(HJ (n rlj6) (ax -1.16))(HJ (n llj1) (ax -0.06))(HJ (n llj2) (ax 2.64))(HJ (n llj3) (ax 13.13))(HJ (n llj4) (ax -12.97))(HJ (n llj5) (ax -2.74))(FRP (n lf) (c -0.01 -0.09 -0.01) (f -4.75 -1.81 17.31))(HJ (n llj6) (ax 1.23)) +{Tue 20:32:36 Step:1889} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1891} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1893} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1893} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1895} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1899} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1902} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1907} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1909} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1912} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1916} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1922} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1925} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1925} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1928} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1929} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1932} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1936} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1937} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1939} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1939} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1941} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1944} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1945} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1947} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1950} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1953} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1971} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2031} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2034} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:2035} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2038} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:2039} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2042} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 415.35))(GS (sl 0) (sr 0) (t 104.45) (pm PlayOn))(foul 7)(GYR (n torso) (rt 247.74 165.32 -187.09))(ACC (n torso) (a 5.69 -15.11 4.79))(HJ (n hj1) (ax 0.18))(HJ (n hj2) (ax 0.09))(HJ (n raj1) (ax -76.49))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 49.05))(HJ (n raj4) (ax 77.17))(HJ (n laj1) (ax -76.22))(HJ (n laj2) (ax 0.43))(HJ (n laj3) (ax -48.84))(HJ (n laj4) (ax -77.31))(HJ (n rlj1) (ax -22.12))(HJ (n rlj2) (ax -30.76))(HJ (n rlj3) (ax 99.50))(HJ (n rlj4) (ax -128.24))(HJ (n rlj5) (ax 51.35))(FRP (n rf) (c 0.04 0.08 -0.01) (f -20.30 -7.19 77.93))(HJ (n rlj6) (ax 44.99))(HJ (n llj1) (ax -27.16))(HJ (n llj2) (ax 30.68))(HJ (n llj3) (ax 75.91))(HJ (n llj4) (ax -122.32))(HJ (n llj5) (ax 51.27))(FRP (n lf) (c 0.04 0.08 -0.01) (f -46.04 2.46 9.18))(HJ (n llj6) (ax -44.99)) +{Tue 20:32:39 Step:2042} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:2043} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2045} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:2045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2048} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:2049} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:39 Step:2051} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2054} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:2055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2057} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:2057} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2060} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:2061} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2063} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:2063} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2065} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:2065} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2068} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:40 Step:2069} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2071} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:40 Step:2071} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2073} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:40 Step:2073} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2076} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:40 Step:2079} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2081} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:40 Step:2081} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2083} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:40 Step:2083} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2086} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:40 Step:2087} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2089} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:40 Step:2089} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2092} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:40 Step:2093} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2095} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:40 Step:2095} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2098} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:40 Step:2099} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2101} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:40 Step:2101} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2104} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:40 Step:2105} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2107} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:40 Step:2107} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2109} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2111} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2113} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2113} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2116} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:2117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2119} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2119} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2123} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:2123} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2126} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:42 Step:2185} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2188} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:42 Step:2189} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2191} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2191} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2194} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:42 Step:2195} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2198} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:43 Step:2199} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2202} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:43 Step:2203} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2207} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2209} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2227} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2230} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:43 Step:2231} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2233} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2233} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2235} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2235} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2237} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2237} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2239} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2239} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2241} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2241} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2244} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2249} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2251} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2251} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2254} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2255} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2257} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2259} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2261} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2263} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2263} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2266} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2273} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2276} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:45 Step:2301} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2303} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2305} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2308} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:45 Step:2309} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2311} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2311} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2314} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:45 Step:2317} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2319} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2319} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2321} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2321} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2324} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:45 Step:2325} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2327} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2333} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2333} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2336} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:46 Step:2337} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2339} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2341} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2341} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2345} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:46 Step:2345} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2347} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2347} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2350} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:46 Step:2353} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2355} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2355} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2358} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:46 Step:2359} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2361} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2361} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2363} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2363} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2366} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:46 Step:2367} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2369} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2369} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2372} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2373} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2375} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2378} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2379} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2381} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2383} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2385} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2387} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2389} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2389} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2392} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2421} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2423} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2425} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2425} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2428} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2429} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2431} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2431} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2433} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2433} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2437} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2437} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2439} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2441} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2441} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2444} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2445} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2447} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2447} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2449} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2449} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2453} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2453} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2454} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:49 Step:2455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2457} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2457} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2459} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2459} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2461} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2464} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:49 Step:2465} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2467} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2469} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2471} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2471} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:50 Step:2521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2523} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2526} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:50 Step:2527} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2529} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2531} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2531} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2533} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2535} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2538} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:50 Step:2539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2541} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2543} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2543} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2546} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:51 Step:2547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2550} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2554} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:51 Step:2555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2559} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2562} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2605} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2608} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2611} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2615} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2618} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2622} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2626} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2627} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2629} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2629} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2632} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2643} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:53 Step:2643} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2647} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2649} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:53 Step:2649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2651} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:53 Step:2651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2654} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2657} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:53 Step:2657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2659} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:53 Step:2659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2662} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2665} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:53 Step:2665} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2669} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2672} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2717} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2720} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2720} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2721} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2724} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:55 Step:2725} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2729} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2729} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2732} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:55 Step:2733} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2735} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2737} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2739} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2739} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2747} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2751} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2755} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:56 Step:2803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2804} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2807} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2809} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2811} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:56 Step:2811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2813} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:56 Step:2813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2815} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2817} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2820} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2831} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2833} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2836} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2839} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2842} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2843} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2845} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2845} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2848} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2848} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2849} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2851} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2854} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2855} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2857} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2857} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2860} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:58 Step:2861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2865} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2865} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2867} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2869} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2931} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2934} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2935} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2937} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2937} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2940} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2942} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 433.34))(GS (sl 0) (sr 0) (t 122.45) (pm PlayOn))(foul 7)(GYR (n torso) (rt 25.12 33.89 194.92))(ACC (n torso) (a 3.93 2.42 -3.02))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax 0.01))(HJ (n raj1) (ax -81.93))(HJ (n raj2) (ax -11.05))(HJ (n raj3) (ax 45.77))(HJ (n raj4) (ax 86.16))(HJ (n laj1) (ax -81.93))(HJ (n laj2) (ax -0.95))(HJ (n laj3) (ax -45.79))(HJ (n laj4) (ax -86.06))(HJ (n rlj1) (ax -19.60))(HJ (n rlj2) (ax -31.64))(HJ (n rlj3) (ax 99.00))(HJ (n rlj4) (ax -97.93))(HJ (n rlj5) (ax 50.78))(FRP (n rf) (c -0.04 -0.08 -0.02) (f -20.24 25.06 -1.15))(HJ (n rlj6) (ax 22.85))(HJ (n llj1) (ax -19.63))(HJ (n llj2) (ax 31.64))(HJ (n llj3) (ax 63.91))(HJ (n llj4) (ax -95.16))(HJ (n llj5) (ax 50.78))(FRP (n lf) (c 0.04 0.08 -0.02) (f 2.66 -16.89 -4.50))(HJ (n llj6) (ax -22.83)) +{Tue 20:32:59 Step:2943} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2943} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2945} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2945} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2947} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2948} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 433.46))(GS (sl 0) (sr 0) (t 122.57) (pm PlayOn))(foul 7)(GYR (n torso) (rt -373.91 -63.09 226.03))(ACC (n torso) (a 3.90 1.05 -4.69))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.82))(HJ (n raj1) (ax -86.11))(HJ (n raj2) (ax -1.88))(HJ (n raj3) (ax 70.94))(HJ (n raj4) (ax 86.25))(HJ (n laj1) (ax -111.19))(HJ (n laj2) (ax -0.95))(HJ (n laj3) (ax -68.37))(HJ (n laj4) (ax -86.44))(HJ (n rlj1) (ax -57.46))(HJ (n rlj2) (ax -26.08))(HJ (n rlj3) (ax 99.02))(HJ (n rlj4) (ax -126.01))(HJ (n rlj5) (ax 52.74))(HJ (n rlj6) (ax -19.21))(HJ (n llj1) (ax -1.72))(HJ (n llj2) (ax 26.37))(HJ (n llj3) (ax 106.03))(HJ (n llj4) (ax -123.27))(HJ (n llj5) (ax 52.74))(FRP (n lf) (c 0.04 0.08 -0.01) (f -1.82 -59.02 40.12))(HJ (n llj6) (ax 19.25)) +{Tue 20:33:00 Step:2949} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2949} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2951} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2955} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:33:00 Step:2955} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2957} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2961} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2964} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:33:00 Step:2965} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2967} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2969} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2969} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2971} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2971} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2973} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2973} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2975} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2975} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2977} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2977} Server_Comm.py: Received a new packet while on world.update()! diff --git a/logs/2025-11-04_20.31.56__FRMTHI/Gym_1.log b/logs/2025-11-04_20.31.56__FRMTHI/Gym_1.log new file mode 100644 index 0000000..613b6f5 --- /dev/null +++ b/logs/2025-11-04_20.31.56__FRMTHI/Gym_1.log @@ -0,0 +1,954 @@ +{Tue 20:31:56 Step:1} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:5} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:7} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:56 Step:7} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:10} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:31:56 Step:11} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:13} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:56 Step:13} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:16} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:05 Step:16} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:05 Step:478} Server_Comm.py: The agent lost 461 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:483} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:483} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:486} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:486} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:06 Step:487} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:489} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:492} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:495} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:498} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:499} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:501} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:501} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:504} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:505} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:508} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:515} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:518} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:523} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:525} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:527} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:527} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:529} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:532} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:536} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:543} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:543} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:545} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:548} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:551} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:554} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:557} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:559} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:561} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:565} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:568} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:568} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:571} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:573} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:577} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:580} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:584} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:588} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:592} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:595} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:600} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:601} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:604} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:605} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:610} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:615} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:620} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:620} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:09 Step:621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:625} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:630} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:631} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:635} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:635} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:640} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:645} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:645} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:649} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:10 Step:649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:652} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:10 Step:653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:656} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:10 Step:657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:659} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:661} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:663} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:665} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:665} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:666} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:10 Step:667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:669} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:673} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:677} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:10 Step:687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:689} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:719} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:722} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:11 Step:725} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:727} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:730} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:11 Step:731} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 390.04))(GS (sl 0) (sr 0) (t 14.22) (pm PlayOn))(foul 7)(GYR (n torso) (rt 168.68 10.64 17.01))(ACC (n torso) (a -1.66 0.34 17.73))(HJ (n hj1) (ax 0.04))(HJ (n hj2) (ax -0.04))(See (P (team Gym) (id 1) (llowerarm (pol 0.10 53.11 30.99))) (G2R (pol 25.18 -11.80 -37.42)) (G1R (pol 25.10 -6.12 -38.13)) (F1R (pol 26.62 19.14 -38.41)) (F2R (pol 27.34 -35.51 -34.56)) (B (pol 1.48 -59.73 -32.86)) (mypos -10.08 0.98 0.26) (myorien 5.04) (ballpos -9.00 0.00 0.04) (L (pol 14.91 -60.04 -23.88) (pol 13.52 44.58 -31.21)) (L (pol 27.35 -35.63 -34.66) (pol 26.70 19.12 -38.38)) (L (pol 26.65 19.10 -38.34) (pol 10.72 59.98 -23.95)) (L (pol 27.38 -35.57 -34.47) (pol 14.86 -60.05 -23.65)) (L (pol 23.35 -0.40 -40.19) (pol 23.62 -19.20 -38.49)) (L (pol 23.39 0.13 -40.09) (pol 25.16 -0.27 -40.11)) (L (pol 23.62 -19.24 -38.63) (pol 25.41 -17.93 -38.86)) (L (pol 12.13 -12.73 -40.09) (pol 11.71 -5.03 -40.54)) (L (pol 11.71 -5.07 -40.58) (pol 10.75 -0.10 -40.74)) (L (pol 10.75 -0.03 -40.89) (pol 9.54 0.77 -41.02)) (L (pol 9.52 0.80 -41.03) (pol 8.47 -4.80 -41.16)) (L (pol 8.46 -4.96 -41.08) (pol 8.15 -15.57 -40.28)) (L (pol 8.15 -15.75 -40.24) (pol 8.74 -25.09 -38.63)) (L (pol 8.73 -24.58 -38.77) (pol 9.89 -28.31 -37.60)) (L (pol 9.90 -28.04 -37.59) (pol 11.08 -26.03 -38.13)) (L (pol 11.08 -25.69 -37.97) (pol 11.91 -19.96 -39.00)) (L (pol 11.91 -19.90 -38.83) (pol 12.13 -12.50 -39.94)))(HJ (n raj1) (ax 46.66))(HJ (n raj2) (ax -14.43))(HJ (n raj3) (ax 61.64))(HJ (n raj4) (ax 90.00))(HJ (n laj1) (ax 46.66))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax -61.79))(HJ (n laj4) (ax -90.00))(HJ (n rlj1) (ax -21.37))(HJ (n rlj2) (ax 16.73))(HJ (n rlj3) (ax 28.35))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax 10.90))(HJ (n rlj6) (ax 47.45))(HJ (n llj1) (ax -24.89))(HJ (n llj2) (ax -21.45))(HJ (n llj3) (ax 25.68))(HJ (n llj4) (ax -2.28))(HJ (n llj5) (ax 10.93))(HJ (n llj6) (ax -47.40)) +{Tue 20:32:11 Step:731} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:733} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:733} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:735} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:739} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:815} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:817} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:819} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:822} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:14 Step:823} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:829} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:837} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:843} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:845} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:845} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:847} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:849} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:849} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:851} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:853} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:853} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:855} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:855} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:857} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:857} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:859} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:859} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:861} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:863} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:865} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:865} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:867} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:869} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:949} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:949} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:951} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:954} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:955} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:957} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:957} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:959} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:959} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:961} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:964} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:965} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:968} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:969} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:971} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:971} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:973} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:973} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:976} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:977} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:979} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:979} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:981} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:983} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:985} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:985} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:987} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:989} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:991} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:991} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:993} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:993} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:996} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:18 Step:997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:999} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:999} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1001} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1001} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1003} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1039} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1043} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:19 Step:1043} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1045} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1049} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:19 Step:1049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1051} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1051} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1055} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:19 Step:1055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1057} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1061} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1063} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1063} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1065} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1067} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1067} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1073} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1081} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1083} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1083} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1131} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1134} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1135} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1137} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1137} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1139} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1139} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1141} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1141} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1142} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 398.26))(GS (sl 0) (sr 0) (t 22.44) (pm PlayOn))(foul 7)(GYR (n torso) (rt 422.75 21.44 66.66))(ACC (n torso) (a 0.26 -0.37 30.46))(HJ (n hj1) (ax 0.09))(HJ (n hj2) (ax 0.16))(HJ (n raj1) (ax 29.22))(HJ (n raj2) (ax 1.03))(HJ (n raj3) (ax 68.70))(HJ (n raj4) (ax 90.89))(HJ (n laj1) (ax 29.22))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax -68.70))(HJ (n laj4) (ax -90.97))(HJ (n rlj1) (ax -22.80))(HJ (n rlj2) (ax 14.70))(HJ (n rlj3) (ax -0.72))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax 65.12))(HJ (n rlj6) (ax 43.58))(HJ (n llj1) (ax -19.47))(HJ (n llj2) (ax -18.45))(HJ (n llj3) (ax 0.98))(HJ (n llj4) (ax 0.97))(HJ (n llj5) (ax 65.15))(HJ (n llj6) (ax -43.51)) +{Tue 20:32:21 Step:1144} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:23 Step:1225} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1227} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1227} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1229} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1229} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1232} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:23 Step:1233} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1235} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1235} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1237} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1237} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1240} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:23 Step:1241} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1243} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1245} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1245} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1247} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1249} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1250} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1251} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1253} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1255} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1255} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1257} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1259} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1261} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1265} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1265} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1269} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1269} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1272} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1273} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1275} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1275} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1277} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1277} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1279} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1279} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1295} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1297} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1297} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1298} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 401.38))(GS (sl 0) (sr 0) (t 25.56) (pm PlayOn))(foul 7)(GYR (n torso) (rt 16.22 -26.04 210.57))(ACC (n torso) (a -2.73 6.05 2.06))(HJ (n hj1) (ax -36.46))(HJ (n hj2) (ax -30.28))(HJ (n raj1) (ax -81.63))(HJ (n raj2) (ax -7.16))(HJ (n raj3) (ax -13.84))(HJ (n raj4) (ax 60.59))(HJ (n laj1) (ax -85.35))(HJ (n laj2) (ax 7.18))(HJ (n laj3) (ax 92.14))(HJ (n laj4) (ax -60.70))(HJ (n rlj1) (ax -8.88))(HJ (n rlj2) (ax -4.06))(HJ (n rlj3) (ax 38.59))(HJ (n rlj4) (ax -72.18))(HJ (n rlj5) (ax 40.98))(HJ (n rlj6) (ax 3.31))(HJ (n llj1) (ax -5.26))(HJ (n llj2) (ax 1.94))(HJ (n llj3) (ax 31.23))(HJ (n llj4) (ax -71.85))(HJ (n llj5) (ax 39.10))(HJ (n llj6) (ax -1.88)) +{Tue 20:32:25 Step:1300} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1383} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1385} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1385} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1387} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1387} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1390} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1391} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1393} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1393} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1396} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1397} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1399} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:27 Step:1399} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1402} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1403} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1405} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:27 Step:1405} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1408} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1409} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1412} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1413} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1415} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:27 Step:1415} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1419} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1419} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1422} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1426} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1427} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1432} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1433} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1436} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1437} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1441} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1441} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1445} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1445} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1448} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 404.38))(GS (sl 0) (sr 0) (t 28.56) (pm PlayOn))(foul 7)(GYR (n torso) (rt 175.86 78.88 65.87))(ACC (n torso) (a -7.97 12.02 -19.93))(HJ (n hj1) (ax -2.67))(HJ (n hj2) (ax 4.43))(HJ (n raj1) (ax -79.31))(HJ (n raj2) (ax -0.19))(HJ (n raj3) (ax 85.39))(HJ (n raj4) (ax 11.25))(HJ (n laj1) (ax -78.69))(HJ (n laj2) (ax 5.93))(HJ (n laj3) (ax -88.66))(HJ (n laj4) (ax -11.88))(HJ (n rlj1) (ax -0.45))(HJ (n rlj2) (ax 21.49))(HJ (n rlj3) (ax 10.96))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax 4.08))(HJ (n rlj6) (ax 44.24))(HJ (n llj1) (ax -86.56))(HJ (n llj2) (ax -23.86))(HJ (n llj3) (ax 20.68))(HJ (n llj4) (ax -14.45))(HJ (n llj5) (ax 1.80))(HJ (n llj6) (ax -44.19)) +{Tue 20:32:28 Step:1448} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1449} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1453} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1453} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1457} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1457} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1461} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1464} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1465} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1469} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1474} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1474} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:28 Step:1476} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:28 Step:1477} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1481} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1484} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1488} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1492} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1497} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1497} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1500} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1501} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1504} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1505} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1508} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1512} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1516} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1519} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1522} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1570} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1574} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1593} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:31 Step:1593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1595} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:31 Step:1595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1598} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1602} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1602} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:31 Step:1603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1606} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1607} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1610} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1615} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:31 Step:1615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1618} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1622} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1623} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:31 Step:1625} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:31 Step:1625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1629} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1629} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1632} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1635} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1638} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1643} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:31 Step:1643} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1645} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1647} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1650} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:32 Step:1665} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1667} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1721} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1725} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1725} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1727} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1731} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1733} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1735} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1737} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1739} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1739} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1807} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1810} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:35 Step:1811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1814} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:35 Step:1815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1818} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 411.77))(GS (sl 0) (sr 0) (t 35.96) (pm PlayOn))(foul 7)(GYR (n torso) (rt 135.80 108.60 108.06))(ACC (n torso) (a 0.68 0.59 -1.14))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -86.81))(HJ (n raj2) (ax 0.49))(HJ (n raj3) (ax 48.66))(HJ (n raj4) (ax 76.30))(HJ (n laj1) (ax -87.05))(HJ (n laj2) (ax 2.17))(HJ (n laj3) (ax -48.95))(HJ (n laj4) (ax -77.37))(HJ (n rlj1) (ax -30.16))(HJ (n rlj2) (ax -41.77))(HJ (n rlj3) (ax 99.99))(HJ (n rlj4) (ax -121.87))(HJ (n rlj5) (ax 51.83))(HJ (n rlj6) (ax 45.00))(HJ (n llj1) (ax -21.17))(HJ (n llj2) (ax 31.11))(HJ (n llj3) (ax 72.21))(HJ (n llj4) (ax -122.40))(HJ (n llj5) (ax 51.09))(HJ (n llj6) (ax -45.00)) +{Tue 20:32:35 Step:1818} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:35 Step:1821} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1823} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1823} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1826} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:35 Step:1827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1829} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1829} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1832} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:35 Step:1833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1835} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1838} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:35 Step:1838} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:36 Step:1839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1840} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 412.21))(GS (sl 0) (sr 0) (t 36.40) (pm PlayOn))(foul 7)(GYR (n torso) (rt -121.94 -145.25 -160.02))(ACC (n torso) (a -6.40 3.33 -6.02))(HJ (n hj1) (ax 91.21))(HJ (n hj2) (ax 6.91))(HJ (n raj1) (ax -91.69))(HJ (n raj2) (ax 0.59))(HJ (n raj3) (ax 51.62))(HJ (n raj4) (ax 83.29))(HJ (n laj1) (ax -115.68))(HJ (n laj2) (ax 2.13))(HJ (n laj3) (ax -69.12))(HJ (n laj4) (ax -71.79))(HJ (n rlj1) (ax -34.19))(HJ (n rlj2) (ax -41.90))(HJ (n rlj3) (ax 99.99))(HJ (n rlj4) (ax -128.43))(HJ (n rlj5) (ax 52.59))(FRP (n rf) (c 0.04 -0.08 -0.01) (f -7.03 16.93 54.07))(HJ (n rlj6) (ax 45.00))(HJ (n llj1) (ax -6.92))(HJ (n llj2) (ax 29.80))(HJ (n llj3) (ax 14.12))(HJ (n llj4) (ax -66.10))(HJ (n llj5) (ax 73.62))(HJ (n llj6) (ax -45.00)) +{Tue 20:32:36 Step:1841} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1841} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1843} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1843} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:36 Step:1849} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1852} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1853} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1856} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1857} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1859} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1859} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1862} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1866} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1870} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1870} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1874} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1875} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1877} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1881} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1881} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1885} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1885} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1888} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1889} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1892} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1893} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1895} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1900} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1904} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1904} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1908} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1912} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1912} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1916} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1921} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1925} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1925} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1930} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1931} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1934} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1935} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1938} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1939} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1942} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1942} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1943} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1947} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1951} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1955} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1955} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1959} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1959} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1961} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:38 Step:1961} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1964} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1965} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1967} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:38 Step:1967} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1970} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1971} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1973} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:38 Step:1973} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1976} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1976} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1977} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1979} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:38 Step:1979} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1982} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1985} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:1985} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1988} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:1989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1992} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:1993} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1996} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:1997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1999} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:1999} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2002} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:2003} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2005} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:2005} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2007} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:2007} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2010} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:2011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2013} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:2013} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2016} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:2017} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2019} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:2019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2021} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:2021} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2023} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:2023} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2027} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:2027} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2030} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:40 Step:2031} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2033} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:40 Step:2033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2035} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:40 Step:2035} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2038} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:40 Step:2039} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2041} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2043} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2045} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:40 Step:2045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2048} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:40 Step:2049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2051} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:40 Step:2051} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2053} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:40 Step:2053} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2055} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:40 Step:2055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2057} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2099} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2101} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2101} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2104} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:2105} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2107} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 417.55))(GS (sl 0) (sr 0) (t 41.74) (pm PlayOn))(foul 7)(GYR (n torso) (rt -36.91 -202.13 166.72))(ACC (n torso) (a -0.28 -33.34 40.79))(HJ (n hj1) (ax 0.01))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rfoot (pol 0.41 -52.98 -57.69)) (lfoot (pol 0.38 39.82 -55.30))) (F2L (pol 11.22 -22.59 46.02)) (mypos -9.89 -0.02 0.34) (myorien -101.62) (ballpos -9.00 0.00 0.04) (L (pol 11.23 -22.25 46.03) (pol 5.76 -60.01 26.25)) (L (pol 12.62 60.10 28.69) (pol 11.23 -22.68 46.08)) (L (pol 3.69 -59.96 23.74) (pol 4.46 -45.81 34.52)) (L (pol 4.47 -46.11 34.43) (pol 5.92 -57.54 28.39)))(HJ (n raj1) (ax -77.02))(HJ (n raj2) (ax -9.16))(HJ (n raj3) (ax 42.70))(HJ (n raj4) (ax 70.90))(HJ (n laj1) (ax -79.12))(HJ (n laj2) (ax 10.29))(HJ (n laj3) (ax -42.75))(HJ (n laj4) (ax -90.36))(HJ (n rlj1) (ax -33.91))(HJ (n rlj2) (ax -30.20))(HJ (n rlj3) (ax 81.01))(HJ (n rlj4) (ax -103.87))(HJ (n rlj5) (ax 50.30))(FRP (n rf) (c -0.04 0.08 -0.01) (f 36.30 -13.51 45.62))(HJ (n rlj6) (ax 30.84))(HJ (n llj1) (ax -21.48))(HJ (n llj2) (ax 32.47))(HJ (n llj3) (ax 101.29))(HJ (n llj4) (ax -104.61))(HJ (n llj5) (ax 50.33))(FRP (n lf) (c 0.00 0.04 -0.02) (f -64.59 -5.53 7.90))(HJ (n llj6) (ax -30.85)) +{Tue 20:32:41 Step:2107} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2107} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2110} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:2115} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2118} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:42 Step:2121} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2123} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2123} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2125} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2125} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2127} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2127} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2130} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:42 Step:2131} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2133} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2137} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2139} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2139} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2142} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:42 Step:2143} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2145} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2145} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2148} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:42 Step:2149} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2152} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:42 Step:2157} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2159} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2159} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2161} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2161} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2163} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2163} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2166} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:43 Step:2173} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2174} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2175} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2183} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2185} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2185} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2187} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2187} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2190} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:43 Step:2191} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2193} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2193} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2195} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2195} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2197} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2197} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2200} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:43 Step:2201} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2203} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2203} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2205} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2205} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2207} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2207} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2209} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2209} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2211} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2277} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2280} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:45 Step:2281} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2283} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2283} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2287} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:45 Step:2287} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2290} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:45 Step:2291} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2293} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2293} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2295} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2295} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2298} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:45 Step:2299} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2301} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2301} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2304} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:45 Step:2305} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2309} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:46 Step:2309} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2311} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2311} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2313} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2313} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2315} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2315} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2317} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2317} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2319} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2323} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2325} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2325} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2326} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 421.93))(GS (sl 0) (sr 0) (t 46.12) (pm PlayOn))(foul 7)(GYR (n torso) (rt -382.71 301.53 162.66))(ACC (n torso) (a -0.52 -1.05 -3.61))(HJ (n hj1) (ax 77.06))(HJ (n hj2) (ax 6.20))(HJ (n raj1) (ax -98.67))(HJ (n raj2) (ax -5.68))(HJ (n raj3) (ax 38.73))(HJ (n raj4) (ax 40.84))(HJ (n laj1) (ax -74.77))(HJ (n laj2) (ax 8.17))(HJ (n laj3) (ax -38.14))(HJ (n laj4) (ax -40.79))(HJ (n rlj1) (ax -12.16))(HJ (n rlj2) (ax -12.10))(HJ (n rlj3) (ax 21.74))(HJ (n rlj4) (ax -94.40))(HJ (n rlj5) (ax -3.49))(HJ (n rlj6) (ax 17.08))(HJ (n llj1) (ax -9.26))(HJ (n llj2) (ax 3.99))(HJ (n llj3) (ax 12.28))(HJ (n llj4) (ax -87.46))(HJ (n llj5) (ax 46.37))(HJ (n llj6) (ax -12.62)) +{Tue 20:32:46 Step:2327} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2327} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2329} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2329} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2333} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2333} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2335} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2337} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2337} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2342} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2375} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2377} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2377} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2380} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2381} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2383} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2383} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2386} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2387} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2390} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2391} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2393} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2425} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2427} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2427} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2429} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2429} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2432} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2433} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2435} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2541} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2544} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:50 Step:2545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2547} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2550} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:51 Step:2565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2567} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2571} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2573} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2575} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2579} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:51 Step:2579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2583} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2583} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2585} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2587} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2589} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2591} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2594} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:51 Step:2595} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:52 Step:2599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2602} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2605} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2605} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2608} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2611} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2621} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2628} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2629} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2632} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2633} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2635} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2635} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2639} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2693} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:53 Step:2693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2697} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2699} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 429.38))(GS (sl 0) (sr 0) (t 53.58) (pm PlayOn))(foul 7)(GYR (n torso) (rt -117.41 -24.77 142.86))(ACC (n torso) (a 7.72 -4.98 8.55))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rfoot (pol 0.39 -48.56 -57.45)) (lfoot (pol 0.37 40.35 -56.27))) (F2L (pol 11.29 -35.54 42.41)) (mypos -10.12 0.18 0.33) (myorien -89.09) (ballpos -9.00 0.00 0.04) (L (pol 14.37 55.69 30.98) (pol 13.23 59.97 27.47)) (L (pol 11.29 -35.36 42.29) (pol 6.33 -60.20 27.62)) (L (pol 15.77 59.97 28.00) (pol 11.29 -35.22 42.51)) (L (pol 3.91 -60.12 24.94) (pol 4.44 -53.34 30.65)) (L (pol 4.43 -53.46 30.62) (pol 5.06 -60.11 26.65)))(HJ (n raj1) (ax -77.07))(HJ (n raj2) (ax 0.83))(HJ (n raj3) (ax 42.68))(HJ (n raj4) (ax 75.21))(HJ (n laj1) (ax -77.11))(HJ (n laj2) (ax -1.03))(HJ (n laj3) (ax -42.70))(HJ (n laj4) (ax -75.07))(HJ (n rlj1) (ax -31.58))(HJ (n rlj2) (ax -32.49))(HJ (n rlj3) (ax 91.21))(HJ (n rlj4) (ax -108.75))(HJ (n rlj5) (ax 50.32))(FRP (n rf) (c 0.01 0.08 -0.01) (f 59.06 -9.88 13.15))(HJ (n rlj6) (ax 45.00))(HJ (n llj1) (ax -24.68))(HJ (n llj2) (ax 32.49))(HJ (n llj3) (ax 102.08))(HJ (n llj4) (ax -108.78))(HJ (n llj5) (ax 50.22))(FRP (n lf) (c -0.03 0.02 -0.02) (f -60.00 -15.79 6.83))(HJ (n llj6) (ax -45.01)) +{Tue 20:32:54 Step:2699} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2699} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2703} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2705} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 429.50))(GS (sl 0) (sr 0) (t 53.70) (pm PlayOn))(foul 7)(GYR (n torso) (rt -0.97 24.74 -23.02))(ACC (n torso) (a 7.92 -5.35 4.83))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rfoot (pol 0.40 -41.83 -57.67)) (lfoot (pol 0.39 28.42 -59.01))) (F2L (pol 11.28 -38.64 47.13)) (mypos -10.13 0.15 0.35) (myorien -86.58) (ballpos -9.00 0.00 0.04) (L (pol 14.35 57.20 32.58) (pol 13.60 60.06 30.17)) (L (pol 11.26 -38.84 47.08) (pol 6.72 -60.09 33.90)) (L (pol 15.17 60.03 30.49) (pol 11.26 -38.76 47.12)) (L (pol 4.14 -59.94 31.02) (pol 4.41 -56.59 34.23)) (L (pol 4.42 -56.98 34.18) (pol 4.69 -60.00 31.94)))(HJ (n raj1) (ax -106.21))(HJ (n raj2) (ax 0.71))(HJ (n raj3) (ax 60.91))(HJ (n raj4) (ax 75.39))(HJ (n laj1) (ax -106.29))(HJ (n laj2) (ax -1.19))(HJ (n laj3) (ax -60.95))(HJ (n laj4) (ax -75.13))(HJ (n rlj1) (ax -25.22))(HJ (n rlj2) (ax -27.46))(HJ (n rlj3) (ax 86.20))(HJ (n rlj4) (ax -96.88))(HJ (n rlj5) (ax 53.15))(FRP (n rf) (c 0.04 0.03 -0.01) (f 57.02 -1.62 25.58))(HJ (n rlj6) (ax 45.00))(HJ (n llj1) (ax -9.27))(HJ (n llj2) (ax 29.00))(HJ (n llj3) (ax 98.81))(HJ (n llj4) (ax -96.92))(HJ (n llj5) (ax 52.98))(FRP (n lf) (c -0.04 -0.00 -0.01) (f -9.59 0.72 61.51))(HJ (n llj6) (ax -45.01)) +{Tue 20:32:54 Step:2705} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2708} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2713} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2715} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2718} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2721} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2721} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2724} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2725} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2728} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2729} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2731} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2731} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2733} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2733} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2736} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2739} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2739} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2741} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2741} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2744} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2747} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2749} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2751} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2754} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:55 Step:2755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2757} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2759} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2762} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:55 Step:2763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2765} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2768} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:55 Step:2769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2771} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2774} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:55 Step:2775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2777} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2779} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2779} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2782} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:55 Step:2783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2785} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2788} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:55 Step:2789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2791} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2793} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2796} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:56 Step:2797} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:56 Step:2799} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:56 Step:2799} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2801} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:56 Step:2801} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2804} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:56 Step:2805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2807} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:56 Step:2807} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2810} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:56 Step:2815} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:56 Step:2815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2818} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2865} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2867} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2869} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2869} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2871} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2875} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2879} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2879} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2881} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2881} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2884} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2885} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2888} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2889} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2891} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2893} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2893} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2899} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2902} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:58 Step:2903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2905} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2908} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:58 Step:2909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2911} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2913} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2915} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2918} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:58 Step:2927} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2929} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2929} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2932} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:58 Step:2935} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2937} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2939} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2941} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2944} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2945} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2948} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2954} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2955} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2957} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2957} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2959} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2961} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2961} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2964} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2967} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2969} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2969} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2971} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2971} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2973} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2975} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2985} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2985} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2987} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2987} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2989} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2992} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? diff --git a/logs/2025-11-04_20.31.56__NDEZAL/Gym_1.log b/logs/2025-11-04_20.31.56__NDEZAL/Gym_1.log new file mode 100644 index 0000000..80b5581 --- /dev/null +++ b/logs/2025-11-04_20.31.56__NDEZAL/Gym_1.log @@ -0,0 +1,1073 @@ +{Tue 20:31:56 Step:1} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:5} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:7} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:56 Step:7} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:9} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:56 Step:9} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:11} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:56 Step:11} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:13} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:56 Step:13} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:15} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:56 Step:15} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:17} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:56 Step:17} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:19} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:21} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:56 Step:21} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:24} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:05 Step:24} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:06 Step:474} Server_Comm.py: The agent lost 449 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:475} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:477} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:477} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:479} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:481} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:483} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:483} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:485} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:488} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:491} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:493} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:496} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:499} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:501} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:501} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:504} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:505} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:508} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:512} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:515} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:518} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:521} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:524} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:527} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:527} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:530} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:531} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:534} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:536} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:539} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:542} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:543} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:545} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:548} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:552} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:555} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:557} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:559} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:561} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:563} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:565} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:567} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:569} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:572} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:575} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:578} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:581} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:584} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:587} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:590} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:593} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:597} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:599} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:602} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:606} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:607} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:610} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:614} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:617} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:09 Step:617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:621} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:624} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:628} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:629} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:632} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:633} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:635} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:09 Step:635} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:638} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:639} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:643} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:643} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:646} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:10 Step:647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:649} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:652} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:10 Step:655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:659} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:662} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:10 Step:663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:665} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:665} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:668} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:10 Step:669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:677} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:679} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:679} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:10 Step:683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:686} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:10 Step:687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:689} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:689} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:691} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:693} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:733} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:735} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:737} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:739} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:741} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:743} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:759} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 390.52))(GS (sl 0) (sr 0) (t 79.26) (pm PlayOn))(foul 7)(GYR (n torso) (rt -10.36 -1.92 -0.20))(ACC (n torso) (a -0.12 -9.20 7.91))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.01))(See (P (team Gym) (id 1) (rlowerarm (pol 0.20 -17.88 -50.10)) (llowerarm (pol 0.21 18.01 -50.22)) (rfoot (pol 0.36 -56.47 -56.01)) (lfoot (pol 0.36 56.46 -56.36))) (F2L (pol 10.15 -57.45 29.57)) (mypos -10.56 -0.89 0.29) (myorien -68.91) (ballpos -9.00 0.00 0.04) (L (pol 13.95 38.50 40.77) (pol 11.15 59.72 27.93)) (L (pol 10.12 -57.53 29.71) (pol 9.14 -60.04 27.46)) (L (pol 27.00 59.70 29.16) (pol 10.14 -57.52 29.82)))(HJ (n raj1) (ax -41.51))(HJ (n raj2) (ax 5.67))(HJ (n raj3) (ax 21.19))(HJ (n raj4) (ax 69.10))(HJ (n laj1) (ax -41.61))(HJ (n laj2) (ax -3.54))(HJ (n laj3) (ax -21.05))(HJ (n laj4) (ax -69.10))(HJ (n rlj1) (ax -42.01))(HJ (n rlj2) (ax -38.50))(HJ (n rlj3) (ax 100.04))(HJ (n rlj4) (ax -123.10))(HJ (n rlj5) (ax 47.03))(FRP (n rf) (c -0.04 0.05 -0.01) (f 59.46 13.12 16.63))(HJ (n rlj6) (ax 45.01))(HJ (n llj1) (ax -42.24))(HJ (n llj2) (ax 39.11))(HJ (n llj3) (ax 100.03))(HJ (n llj4) (ax -123.11))(HJ (n llj5) (ax 47.05))(FRP (n lf) (c 0.03 0.05 -0.01) (f -59.50 12.68 15.17))(HJ (n llj6) (ax -45.01)) +{Tue 20:32:12 Step:761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:763} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:765} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:768} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:12 Step:775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:777} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:779} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:779} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:781} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:783} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:785} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:787} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:789} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:792} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:13 Step:797} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:800} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:13 Step:801} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:803} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:806} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:13 Step:807} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:810} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:13 Step:811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:813} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:817} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:13 Step:817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:820} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:14 Step:821} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:824} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:14 Step:825} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:827} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:830} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:15 Step:877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:879} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:889} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:891} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:893} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:893} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:895} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:897} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:899} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:901} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:904} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:15 Step:907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:909} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:911} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:913} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:916} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:16 Step:917} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 393.68))(GS (sl 0) (sr 0) (t 82.42) (pm PlayOn))(foul 7)(GYR (n torso) (rt 151.14 66.90 23.27))(ACC (n torso) (a 7.18 11.58 20.82))(HJ (n hj1) (ax 84.20))(HJ (n hj2) (ax -42.15))(See (P (team Gym) (id 1) (llowerarm (pol 0.23 -41.42 -0.43)) (rfoot (pol 0.42 6.24 -53.85)) (lfoot (pol 0.46 10.29 -50.14))) (G2R (pol 25.58 6.37 22.37)) (G1R (pol 25.69 11.35 24.05)) (F1R (pol 27.82 31.15 27.46)) (F2R (pol 27.22 -11.86 12.89)) (B (pol 1.85 39.69 16.93)) (mypos -10.58 -0.88 0.45) (myorien -14.95) (ballpos -9.00 0.00 0.04) (L (pol 13.96 -29.80 2.08) (pol 15.17 57.28 28.52)) (L (pol 27.13 -11.43 13.00) (pol 27.80 31.61 27.48)) (L (pol 27.84 31.72 27.58) (pol 14.59 59.86 28.45)) (L (pol 27.17 -11.23 12.92) (pol 9.43 -59.82 -16.08)) (L (pol 24.10 16.61 24.18) (pol 23.89 2.31 19.24)) (L (pol 24.11 16.78 23.91) (pol 25.89 16.08 23.90)) (L (pol 23.87 2.25 18.89) (pol 25.68 2.50 19.27)) (L (pol 12.63 11.88 21.51) (pol 12.38 17.49 22.94)) (L (pol 12.37 17.36 23.17) (pol 11.55 21.98 24.32)) (L (pol 11.53 22.20 24.19) (pol 10.36 23.76 24.24)) (L (pol 10.36 23.83 24.33) (pol 9.20 20.95 23.35)) (L (pol 9.22 21.03 23.22) (pol 8.64 13.99 20.95)) (L (pol 8.63 13.94 21.05) (pol 8.98 6.13 18.69)) (L (pol 9.00 6.08 18.58) (pol 10.03 2.11 17.48)) (L (pol 10.03 2.47 17.50) (pol 11.25 2.41 17.99)) (L (pol 11.26 2.41 17.79) (pol 12.20 5.97 19.36)) (L (pol 12.23 6.22 19.53) (pol 12.62 11.76 21.33)))(HJ (n raj1) (ax -31.99))(HJ (n raj2) (ax -16.91))(HJ (n raj3) (ax 93.90))(HJ (n raj4) (ax 89.94))(HJ (n laj1) (ax -31.98))(HJ (n laj2) (ax 3.04))(HJ (n laj3) (ax -93.55))(HJ (n laj4) (ax -64.77))(HJ (n rlj1) (ax 3.25))(HJ (n rlj2) (ax -1.00))(HJ (n rlj3) (ax 40.04))(HJ (n rlj4) (ax -132.36))(HJ (n rlj5) (ax 59.76))(HJ (n rlj6) (ax 38.97))(HJ (n llj1) (ax 1.64))(HJ (n llj2) (ax -23.10))(HJ (n llj3) (ax 21.43))(HJ (n llj4) (ax -97.75))(HJ (n llj5) (ax 51.10))(FRP (n lf) (c 0.04 0.04 -0.01) (f -47.09 4.09 29.49))(HJ (n llj6) (ax 27.74)) +{Tue 20:32:16 Step:917} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:16 Step:919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:921} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:923} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:926} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:16 Step:929} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:931} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:931} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:933} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:936} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:16 Step:939} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:941} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:965} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:968} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:969} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:971} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:971} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:973} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:973} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:976} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:976} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:977} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:979} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:979} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:981} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:983} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:985} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:985} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:987} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:987} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:989} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:992} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:993} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:995} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:995} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:997} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1000} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:18 Step:1005} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1013} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1013} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1015} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1015} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1017} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1017} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1021} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:18 Step:1021} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1023} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1023} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1025} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1025} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1028} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:18 Step:1029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1032} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:18 Step:1037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1041} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1043} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1043} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1045} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1048} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:19 Step:1049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1051} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1051} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1053} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1053} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1056} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:19 Step:1061} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1063} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1063} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1065} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1065} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1068} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:19 Step:1069} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1071} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1073} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1119} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1121} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1123} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1123} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1125} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1125} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1127} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1127} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1129} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1129} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1131} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1131} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1133} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1137} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1139} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1139} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1141} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1147} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1150} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1151} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1153} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1155} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1155} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1158} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1161} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1163} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1163} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1166} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1167} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1170} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:22 Step:1171} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1174} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:22 Step:1175} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1177} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1177} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1179} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1179} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1182} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:22 Step:1183} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1186} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:22 Step:1189} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1190} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1191} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1193} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1193} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1219} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1221} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1221} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1223} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1223} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1225} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1225} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1228} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:23 Step:1229} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1231} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1231} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1235} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:23 Step:1235} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1237} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1237} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1241} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:23 Step:1241} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1243} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1249} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1251} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1251} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1253} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1255} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1255} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1257} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1259} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1262} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1265} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1267} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1267} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1270} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1271} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1273} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1273} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1276} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1279} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1281} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1284} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1285} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1287} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1287} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1290} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1291} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1293} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1293} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1297} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:25 Step:1297} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1299} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1299} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1302} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:25 Step:1305} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1307} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1309} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1311} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1311} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1313} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1313} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1316} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:25 Step:1317} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1321} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1323} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1325} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1327} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1327} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1329} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1329} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1331} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1335} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1337} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1337} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1339} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1342} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1343} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1345} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1345} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1347} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1347} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1350} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1351} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1353} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1355} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1355} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1358} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1363} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1365} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1365} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1368} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1369} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1371} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1374} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1375} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1377} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:27 Step:1377} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1380} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1381} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1383} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:27 Step:1383} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1386} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1387} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1389} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:27 Step:1389} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1391} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:27 Step:1391} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1394} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1395} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1398} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1399} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1403} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1403} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1407} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1407} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1411} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1411} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1414} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1417} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1419} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:28 Step:1419} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1422} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1426} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1427} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1430} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1431} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1434} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1435} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1438} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1442} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1443} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1446} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1447} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1450} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1451} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1453} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:28 Step:1453} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1457} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1457} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1460} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1463} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1465} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1465} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1469} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1471} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1475} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1475} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1477} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1477} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1481} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1484} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1487} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1487} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1490} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1493} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1496} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1497} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1499} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:30 Step:1499} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1501} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:30 Step:1501} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1505} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1505} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1510} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1514} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1517} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:30 Step:1517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1520} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1524} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1527} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:30 Step:1527} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1530} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1531} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1533} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:30 Step:1533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1535} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:30 Step:1535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1538} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1544} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1549} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1553} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1557} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1559} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:31 Step:1559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1562} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1565} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:31 Step:1565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1567} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:31 Step:1567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1570} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1573} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:31 Step:1573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1575} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:31 Step:1575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1578} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:32 Step:1579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1581} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1583} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1583} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1585} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1587} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1589} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1593} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1596} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:32 Step:1597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1599} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1602} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:32 Step:1603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1606} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:32 Step:1607} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1609} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1614} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:32 Step:1615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1617} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1619} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1623} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1627} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1627} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1629} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1629} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1632} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1633} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1635} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1635} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1637} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1637} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1639} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1639} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1642} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1643} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1645} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1645} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1647} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1649} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1652} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1655} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1661} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1664} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:34 Step:1665} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1667} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:34 Step:1667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1669} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:34 Step:1669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1731} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1733} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1733} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1736} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:35 Step:1737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1739} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1739} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1741} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1741} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1744} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:35 Step:1745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1746} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 410.25))(GS (sl 0) (sr 0) (t 99.00) (pm PlayOn))(foul 7)(GYR (n torso) (rt -80.10 -2.86 -187.92))(ACC (n torso) (a 0.60 -6.07 6.80))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -101.35))(HJ (n raj2) (ax -37.90))(HJ (n raj3) (ax 57.92))(HJ (n raj4) (ax 86.37))(HJ (n laj1) (ax -101.35))(HJ (n laj2) (ax 6.41))(HJ (n laj3) (ax -57.93))(HJ (n laj4) (ax -83.67))(HJ (n rlj1) (ax -2.48))(HJ (n rlj2) (ax -28.48))(HJ (n rlj3) (ax 47.73))(HJ (n rlj4) (ax -80.84))(HJ (n rlj5) (ax 52.65))(FRP (n rf) (c -0.06 0.08 -0.02) (f -49.13 -56.41 1.65))(HJ (n rlj6) (ax -4.98))(HJ (n llj1) (ax -5.68))(HJ (n llj2) (ax 28.28))(HJ (n llj3) (ax 100.00))(HJ (n llj4) (ax -86.19))(HJ (n llj5) (ax 52.66))(FRP (n lf) (c 0.05 -0.08 -0.03) (f 8.32 50.70 -21.99))(HJ (n llj6) (ax 4.24)) +{Tue 20:32:35 Step:1749} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:35 Step:1749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1751} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1754} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1759} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1761} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1763} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1766} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1767} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:36 Step:1771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1773} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1773} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1775} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1778} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1785} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1787} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1790} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1795} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1795} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1797} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1797} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1800} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1801} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1805} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1807} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1807} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1810} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1853} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:38 Step:1853} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1855} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:38 Step:1855} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1857} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:38 Step:1857} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1859} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:38 Step:1859} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1861} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:38 Step:1861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1873} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:38 Step:1873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1876} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1878} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1879} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1882} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1885} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1888} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:1889} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1891} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:1891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1894} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:1895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1898} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:1899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1901} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:1901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1911} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:40 Step:1963} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:1966} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:40 Step:1967} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:1970} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:40 Step:1971} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:1974} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:1979} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:1982} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:1983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:1985} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:1985} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:1988} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:1988} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:41 Step:1989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:1992} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:1992} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:1995} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:1997} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:1997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:1999} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:1999} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2001} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2001} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2005} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2008} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:2011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2014} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:2017} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2019} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2021} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2021} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2023} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2061} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2063} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2063} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2065} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2065} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2069} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2071} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2071} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2074} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:43 Step:2077} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2079} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2079} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2081} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2081} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2099} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2100} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2141} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2143} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2143} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2146} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2147} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2149} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2149} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2151} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2151} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2154} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2157} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2159} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2159} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2161} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2161} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2164} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2165} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2167} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2167} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2170} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:45 Step:2171} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2172} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:45 Step:2173} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2175} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2175} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2179} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 418.91))(GS (sl 0) (sr 0) (t 107.65) (pm PlayOn))(foul 7)(GYR (n torso) (rt -397.95 331.56 -93.30))(ACC (n torso) (a -1.04 -4.90 19.83))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -1.21))(See (P (team Gym) (id 1) (rlowerarm (pol 0.28 -39.92 -52.39)) (llowerarm (pol 0.22 33.60 -42.04)) (rfoot (pol 0.41 -38.35 -47.99))) (G2R (pol 25.62 -28.51 50.98)) (G1R (pol 25.81 -21.85 49.39)) (F1L (pol 12.98 57.51 -25.34)) (F1R (pol 28.33 -1.13 38.59)) (B (pol 2.76 16.90 13.92)) (mypos -10.60 -2.22 0.42) (myorien 52.53) (ballpos -9.00 0.00 0.04) (L (pol 10.71 -46.47 49.93) (pol 16.17 18.49 21.94)) (L (pol 25.82 -44.40 51.12) (pol 28.40 -1.72 38.63)) (L (pol 10.99 60.04 -28.41) (pol 12.97 57.33 -25.72)) (L (pol 28.36 -1.12 38.50) (pol 13.00 57.44 -25.65)) (L (pol 24.37 -16.19 45.67) (pol 23.85 -36.33 50.16)) (L (pol 24.40 -16.21 45.47) (pol 26.12 -17.42 45.90)) (L (pol 23.80 -36.31 50.07) (pol 25.62 -36.02 50.49)) (L (pol 12.80 -19.63 45.96) (pol 12.67 -13.02 43.39)) (L (pol 12.70 -13.10 43.34) (pol 11.95 -7.83 40.79)) (L (pol 11.99 -7.62 40.67) (pol 10.81 -5.31 39.14)) (L (pol 10.81 -5.59 39.36) (pol 9.61 -7.45 39.86)) (L (pol 9.63 -7.32 39.99) (pol 8.88 -14.86 42.80)) (L (pol 8.88 -14.87 42.90) (pol 9.06 -24.80 46.32)) (L (pol 9.06 -24.91 46.14) (pol 10.00 -31.19 48.19)) (L (pol 10.00 -31.44 48.03) (pol 11.24 -31.44 48.52)) (L (pol 11.22 -31.53 48.44) (pol 12.26 -26.69 47.71)) (L (pol 12.26 -26.96 47.59) (pol 12.81 -20.01 45.79)))(HJ (n raj1) (ax -53.92))(HJ (n raj2) (ax 2.43))(HJ (n raj3) (ax 94.21))(HJ (n raj4) (ax -2.08))(HJ (n laj1) (ax -53.93))(HJ (n laj2) (ax -2.41))(HJ (n laj3) (ax -94.81))(HJ (n laj4) (ax -87.80))(HJ (n rlj1) (ax -4.21))(HJ (n rlj2) (ax -50.77))(HJ (n rlj3) (ax 106.13))(HJ (n rlj4) (ax -83.38))(HJ (n rlj5) (ax -1.56))(FRP (n rf) (c -0.05 0.06 -0.01) (f 26.80 -82.79 118.51))(HJ (n rlj6) (ax -27.61))(HJ (n llj1) (ax -1.12))(HJ (n llj2) (ax 45.46))(HJ (n llj3) (ax 100.96))(HJ (n llj4) (ax -133.31))(HJ (n llj5) (ax 14.36))(HJ (n llj6) (ax 14.16)) +{Tue 20:32:45 Step:2179} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:45 Step:2179} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2181} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2181} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2183} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2183} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2185} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2185} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2189} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:45 Step:2193} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2195} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2195} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2197} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2197} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2200} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:45 Step:2201} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2203} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2203} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2206} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:45 Step:2207} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2210} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:46 Step:2211} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2213} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2213} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2216} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:46 Step:2216} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2219} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2222} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:46 Step:2223} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2225} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2227} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2227} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2229} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2229} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2231} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2231} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2233} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2233} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2235} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2235} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2237} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2237} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2240} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:46 Step:2241} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2243} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2243} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2246} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:46 Step:2247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2249} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2249} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2251} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2251} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2254} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:46 Step:2255} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2257} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2259} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2261} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2263} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2263} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2266} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2269} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2271} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2271} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2273} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2273} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2276} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2315} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2317} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2317} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2320} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2321} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2323} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2323} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2326} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2327} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2329} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2329} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2333} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2333} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2335} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2335} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2338} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2342} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2343} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2345} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2345} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2348} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:49 Step:2349} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2350} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2351} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2354} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:49 Step:2369} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2371} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2373} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2431} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2433} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2433} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2435} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2435} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2437} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2437} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2440} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:51 Step:2441} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2443} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2443} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2446} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:51 Step:2455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2457} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2457} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2460} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:51 Step:2461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2463} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2465} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2465} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2469} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:51 Step:2469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2471} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2474} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:51 Step:2479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2481} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2483} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2483} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2486} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2497} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2497} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2500} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2517} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:53 Step:2549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2551} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:53 Step:2551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2554} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2558} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2561} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:53 Step:2575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2577} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:53 Step:2577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2584} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2588} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2592} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2596} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2601} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2601} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2604} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2613} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2616} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2620} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:55 Step:2623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2625} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2629} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:55 Step:2629} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2631} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2631} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2633} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2633} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2636} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:55 Step:2651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2652} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:55 Step:2653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2655} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2658} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:55 Step:2659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2661} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2664} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:56 Step:2711} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2714} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2719} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2731} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2734} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2738} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2739} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2742} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2746} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2753} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2753} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2755} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2758} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:58 Step:2759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2763} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2766} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:58 Step:2767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2771} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2773} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2773} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2776} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:58 Step:2777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2779} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2779} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2781} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2783} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2786} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:58 Step:2786} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:58 Step:2789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2791} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2794} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2799} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2801} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2801} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2805} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2808} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:33:00 Step:2847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2850} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:33:00 Step:2857} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2859} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2863} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2863} Server_Comm.py: Received a new packet while thinking! +{Tue 20:33:00 Step:2867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2869} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2869} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2871} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2874} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? diff --git a/logs/2025-11-04_20.31.56__POEISF/Gym_1.log b/logs/2025-11-04_20.31.56__POEISF/Gym_1.log new file mode 100644 index 0000000..03eac81 --- /dev/null +++ b/logs/2025-11-04_20.31.56__POEISF/Gym_1.log @@ -0,0 +1,818 @@ +{Tue 20:31:56 Step:3} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:5} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:56 Step:5} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:8} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:31:56 Step:9} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:11} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:56 Step:11} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:14} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:31:57 Step:15} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:57 Step:17} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:57 Step:17} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:57 Step:19} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:57 Step:19} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:57 Step:22} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:05 Step:22} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:06 Step:463} Server_Comm.py: The agent lost 440 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:475} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:475} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:478} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:481} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:484} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:487} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:487} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:489} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:492} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:495} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:498} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:503} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:506} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:507} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:508} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:511} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:513} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:515} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:518} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:521} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:523} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:525} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:527} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:529} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:531} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:531} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:534} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:539} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:541} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:543} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:543} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:545} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:547} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:550} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:554} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:560} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:563} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:566} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:570} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:574} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:577} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:579} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:582} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:582} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:583} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:585} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:589} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:592} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:595} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:09 Step:595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:597} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:09 Step:597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:602} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:635} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:637} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:637} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:640} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:10 Step:641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:644} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:10 Step:645} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:649} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:651} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:653} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:655} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:657} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:659} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:661} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:664} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:10 Step:667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:673} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:677} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:680} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:11 Step:681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:683} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:685} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:694} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:12 Step:721} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:723} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:723} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:726} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:12 Step:727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:729} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:729} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:732} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:12 Step:735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:736} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:12 Step:737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:745} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:747} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:751} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:755} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:12 Step:755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:757} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:759} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:762} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:12 Step:765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:779} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:781} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:783} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:785} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:787} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:790} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:13 Step:793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:795} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:795} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:797} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:797} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:799} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:831} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:833} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:835} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:837} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:839} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:841} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:841} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:844} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:14 Step:845} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:847} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:943} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:946} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:949} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:949} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:951} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 394.44))(GS (sl 0) (sr 0) (t 83.94) (pm PlayOn))(foul 7)(GYR (n torso) (rt 72.80 -0.13 0.08))(ACC (n torso) (a -0.01 7.98 5.39))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.15 -23.28 -6.31)) (llowerarm (pol 0.15 25.35 -6.11)) (rfoot (pol 0.45 -3.00 -58.96)) (lfoot (pol 0.46 4.21 -59.06))) (G2R (pol 25.59 15.00 -37.36)) (G1R (pol 25.57 20.65 -36.45)) (F1R (pol 27.50 42.92 -31.58)) (F2R (pol 27.39 -9.60 -39.80)) (B (pol 1.57 28.68 -44.19)) (mypos -10.54 -0.18 0.25) (myorien -13.74) (ballpos -9.00 0.00 0.04) (L (pol 14.40 -36.55 -34.77) (pol 13.51 59.91 -23.56)) (L (pol 27.37 -9.55 -39.59) (pol 27.43 43.32 -31.92)) (L (pol 27.48 42.89 -31.80) (pol 16.23 60.26 -23.63)) (L (pol 27.32 -9.76 -39.61) (pol 10.76 -59.90 -24.21)) (L (pol 23.95 26.94 -37.03) (pol 23.88 9.11 -40.07)) (L (pol 23.99 27.11 -36.79) (pol 25.73 26.28 -37.28)) (L (pol 23.91 8.89 -39.80) (pol 25.68 9.39 -39.77)) (L (pol 12.54 19.11 -39.13) (pol 12.24 25.83 -38.13)) (L (pol 12.23 25.62 -37.83) (pol 11.37 30.68 -36.64)) (L (pol 11.35 30.88 -36.68) (pol 10.15 32.42 -36.26)) (L (pol 10.16 32.39 -36.50) (pol 9.04 28.71 -37.56)) (L (pol 9.03 29.07 -37.90) (pol 8.54 19.70 -39.71)) (L (pol 8.55 19.56 -39.48) (pol 8.97 9.55 -40.70)) (L (pol 8.97 9.61 -40.79) (pol 10.07 5.37 -40.95)) (L (pol 10.08 5.18 -41.05) (pol 11.31 6.58 -40.53)) (L (pol 11.29 6.69 -40.74) (pol 12.19 11.86 -40.12)) (L (pol 12.20 12.16 -40.07) (pol 12.55 18.97 -38.85)))(HJ (n raj1) (ax 8.31))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 47.79))(HJ (n raj4) (ax 84.02))(HJ (n laj1) (ax 8.31))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax -47.79))(HJ (n laj4) (ax -84.01))(HJ (n rlj1) (ax -42.52))(HJ (n rlj2) (ax 26.24))(HJ (n rlj3) (ax 11.27))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax 52.80))(HJ (n rlj6) (ax 47.24))(HJ (n llj1) (ax -42.50))(HJ (n llj2) (ax -26.25))(HJ (n llj3) (ax 11.27))(HJ (n llj4) (ax 1.00))(HJ (n llj5) (ax 52.80))(HJ (n llj6) (ax -47.16)) +{Tue 20:32:17 Step:953} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:953} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:955} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1053} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1055} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1057} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1057} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1059} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1059} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1061} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1061} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1063} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1063} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1066} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:19 Step:1067} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:20 Step:1071} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1073} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1073} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1075} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1079} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1087} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1088} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1089} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1091} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1091} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1093} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1093} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1095} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1095} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1097} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1097} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1099} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1099} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1100} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 397.42))(GS (sl 0) (sr 0) (t 86.92) (pm PlayOn))(foul 7)(GYR (n torso) (rt -167.41 -61.07 46.61))(ACC (n torso) (a -4.81 -0.34 -1.51))(HJ (n hj1) (ax 0.04))(HJ (n hj2) (ax 0.03))(HJ (n raj1) (ax -54.63))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 40.66))(HJ (n raj4) (ax -1.54))(HJ (n laj1) (ax -50.94))(HJ (n laj2) (ax -5.01))(HJ (n laj3) (ax -40.45))(HJ (n laj4) (ax 5.84))(HJ (n rlj1) (ax -9.77))(HJ (n rlj2) (ax -51.69))(HJ (n rlj3) (ax 105.24))(HJ (n rlj4) (ax -103.53))(HJ (n rlj5) (ax 73.90))(FRP (n rf) (c -0.04 -0.08 -0.02) (f -25.52 -20.34 2.36))(HJ (n rlj6) (ax 40.25))(HJ (n llj1) (ax -36.03))(HJ (n llj2) (ax 45.05))(HJ (n llj3) (ax 94.05))(HJ (n llj4) (ax -124.46))(HJ (n llj5) (ax 73.89))(HJ (n llj6) (ax -40.26)) +{Tue 20:32:20 Step:1101} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1103} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 397.48))(GS (sl 0) (sr 0) (t 86.98) (pm PlayOn))(foul 7)(foul 7)(GYR (n torso) (rt -195.38 -13.69 205.30))(ACC (n torso) (a 25.22 -31.40 28.50))(HJ (n hj1) (ax 0.04))(HJ (n hj2) (ax 0.03))(See (P (team Gym) (id 1) (llowerarm (pol 0.28 44.54 -57.52)) (lfoot (pol 0.37 47.73 -58.24))) (G2R (pol 24.99 57.96 49.46)) (F2R (pol 26.72 27.12 56.72)) (mypos -9.98 -0.47 0.31) (myorien -49.95) (ballpos -9.00 0.00 0.04) (L (pol 13.80 -13.62 54.48) (pol 10.21 40.45 52.87)) (L (pol 26.71 27.11 56.73) (pol 26.45 30.30 56.19)) (L (pol 26.71 27.08 56.53) (pol 9.53 -60.12 24.76)) (L (pol 23.33 49.86 50.90) (pol 25.14 50.45 50.45)) (L (pol 8.40 51.08 48.92) (pol 9.48 45.61 51.20)) (L (pol 9.46 45.76 51.03) (pol 10.69 47.25 50.79)) (L (pol 10.67 47.27 50.72) (pol 11.62 52.77 48.37)) (L (pol 11.62 52.92 48.60) (pol 12.00 59.62 44.70)))(HJ (n raj1) (ax -68.66))(HJ (n raj2) (ax 1.12))(HJ (n raj3) (ax 54.65))(HJ (n raj4) (ax 5.63))(HJ (n laj1) (ax -60.31))(HJ (n laj2) (ax 0.82))(HJ (n laj3) (ax -56.20))(HJ (n laj4) (ax -1.92))(HJ (n rlj1) (ax -2.74))(HJ (n rlj2) (ax -44.81))(HJ (n rlj3) (ax 98.44))(HJ (n rlj4) (ax -111.64))(HJ (n rlj5) (ax 78.49))(FRP (n rf) (c -0.00 0.08 -0.02) (f -100.21 42.64 -3.38))(HJ (n rlj6) (ax 37.59))(HJ (n llj1) (ax -20.16))(HJ (n llj2) (ax 43.10))(HJ (n llj3) (ax 96.55))(HJ (n llj4) (ax -117.61))(HJ (n llj5) (ax 69.57))(FRP (n lf) (c -0.02 0.02 -0.02) (f 102.74 36.97 33.30))(HJ (n llj6) (ax -37.64)) +{Tue 20:32:20 Step:1103} World_Parser.py: Unknown root tag: bytearray(b'foul') at 72, +Msg: (time (now 397.48))(GS (sl 0) (sr 0) (t 86.98) (pm PlayOn))(foul 7)(foul 7)(GYR (n torso) (rt -195.38 -13.69 205.30))(ACC (n torso) (a 25.22 -31.40 28.50))(HJ (n hj1) (ax 0.04))(HJ (n hj2) (ax 0.03))(See (P (team Gym) (id 1) (llowerarm (pol 0.28 44.54 -57.52)) (lfoot (pol 0.37 47.73 -58.24))) (G2R (pol 24.99 57.96 49.46)) (F2R (pol 26.72 27.12 56.72)) (mypos -9.98 -0.47 0.31) (myorien -49.95) (ballpos -9.00 0.00 0.04) (L (pol 13.80 -13.62 54.48) (pol 10.21 40.45 52.87)) (L (pol 26.71 27.11 56.73) (pol 26.45 30.30 56.19)) (L (pol 26.71 27.08 56.53) (pol 9.53 -60.12 24.76)) (L (pol 23.33 49.86 50.90) (pol 25.14 50.45 50.45)) (L (pol 8.40 51.08 48.92) (pol 9.48 45.61 51.20)) (L (pol 9.46 45.76 51.03) (pol 10.69 47.25 50.79)) (L (pol 10.67 47.27 50.72) (pol 11.62 52.77 48.37)) (L (pol 11.62 52.92 48.60) (pol 12.00 59.62 44.70)))(HJ (n raj1) (ax -68.66))(HJ (n raj2) (ax 1.12))(HJ (n raj3) (ax 54.65))(HJ (n raj4) (ax 5.63))(HJ (n laj1) (ax -60.31))(HJ (n laj2) (ax 0.82))(HJ (n laj3) (ax -56.20))(HJ (n laj4) (ax -1.92))(HJ (n rlj1) (ax -2.74))(HJ (n rlj2) (ax -44.81))(HJ (n rlj3) (ax 98.44))(HJ (n rlj4) (ax -111.64))(HJ (n rlj5) (ax 78.49))(FRP (n rf) (c -0.00 0.08 -0.02) (f -100.21 42.64 -3.38))(HJ (n rlj6) (ax 37.59))(HJ (n llj1) (ax -20.16))(HJ (n llj2) (ax 43.10))(HJ (n llj3) (ax 96.55))(HJ (n llj4) (ax -117.61))(HJ (n llj5) (ax 69.57))(FRP (n lf) (c -0.02 0.02 -0.02) (f 102.74 36.97 33.30))(HJ (n llj6) (ax -37.64)) +{Tue 20:32:20 Step:1103} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1109} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1111} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1157} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1159} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1159} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1162} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:22 Step:1163} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1165} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1220} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:23 Step:1221} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1224} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:23 Step:1225} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1227} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1227} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1233} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1235} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1235} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1238} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:23 Step:1239} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1241} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1241} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1249} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1249} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1252} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1256} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1260} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1265} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1265} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1268} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1269} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1272} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1273} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1276} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1277} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1279} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1279} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1281} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1281} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1285} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1285} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1288} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1359} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1361} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1363} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1363} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1365} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1365} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1368} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1373} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1373} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1375} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1375} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1378} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1379} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1382} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1383} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1385} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1385} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1388} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1389} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1391} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1391} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1393} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:27 Step:1393} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1396} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1397} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1399} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:27 Step:1399} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1402} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1403} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1405} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:27 Step:1405} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1408} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1409} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1412} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1413} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1415} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:27 Step:1417} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1419} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:27 Step:1419} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1422} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1425} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:27 Step:1425} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1429} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1429} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1432} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1433} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1436} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1437} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1441} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1441} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1445} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1445} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1449} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1449} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1453} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1453} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1458} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1459} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1463} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1469} Server_Comm.py: The agent lost 5 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1473} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1479} Server_Comm.py: The agent lost 5 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1483} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1541} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1545} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 406.32))(GS (sl 0) (sr 0) (t 95.82) (pm PlayOn))(foul 7)(foul 7)(GYR (n torso) (rt 18.31 -72.10 -8.45))(ACC (n torso) (a -0.18 -2.64 3.48))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax 0.00))(See (F2L (pol 10.40 -23.62 38.58)) (mypos -10.44 -0.65 0.31) (myorien -95.71) (ballpos -9.00 0.00 0.04) (L (pol 10.41 -23.92 38.47) (pol 5.22 -60.03 22.40)) (L (pol 13.64 60.01 20.57) (pol 10.40 -23.93 38.46)) (L (pol 3.12 -59.80 19.60) (pol 3.64 -48.43 26.82)) (L (pol 3.64 -48.30 27.12) (pol 4.89 -59.80 21.96)))(HJ (n raj1) (ax -72.36))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 39.76))(HJ (n raj4) (ax 90.37))(HJ (n laj1) (ax -72.34))(HJ (n laj2) (ax -3.44))(HJ (n laj3) (ax -39.60))(HJ (n laj4) (ax -85.16))(HJ (n rlj1) (ax -36.76))(HJ (n rlj2) (ax -34.73))(HJ (n rlj3) (ax 100.73))(HJ (n rlj4) (ax -130.05))(HJ (n rlj5) (ax 49.86))(FRP (n rf) (c 0.01 0.03 -0.01) (f 72.77 2.28 22.32))(HJ (n rlj6) (ax 45.11))(HJ (n llj1) (ax -33.26))(HJ (n llj2) (ax 33.27))(HJ (n llj3) (ax 100.08))(HJ (n llj4) (ax -129.82))(HJ (n llj5) (ax 49.93))(FRP (n lf) (c 0.04 0.08 -0.01) (f -49.78 -2.72 35.32))(HJ (n llj6) (ax -45.12)) +{Tue 20:32:30 Step:1545} World_Parser.py: Unknown root tag: bytearray(b'foul') at 72, +Msg: (time (now 406.32))(GS (sl 0) (sr 0) (t 95.82) (pm PlayOn))(foul 7)(foul 7)(GYR (n torso) (rt 18.31 -72.10 -8.45))(ACC (n torso) (a -0.18 -2.64 3.48))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax 0.00))(See (F2L (pol 10.40 -23.62 38.58)) (mypos -10.44 -0.65 0.31) (myorien -95.71) (ballpos -9.00 0.00 0.04) (L (pol 10.41 -23.92 38.47) (pol 5.22 -60.03 22.40)) (L (pol 13.64 60.01 20.57) (pol 10.40 -23.93 38.46)) (L (pol 3.12 -59.80 19.60) (pol 3.64 -48.43 26.82)) (L (pol 3.64 -48.30 27.12) (pol 4.89 -59.80 21.96)))(HJ (n raj1) (ax -72.36))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 39.76))(HJ (n raj4) (ax 90.37))(HJ (n laj1) (ax -72.34))(HJ (n laj2) (ax -3.44))(HJ (n laj3) (ax -39.60))(HJ (n laj4) (ax -85.16))(HJ (n rlj1) (ax -36.76))(HJ (n rlj2) (ax -34.73))(HJ (n rlj3) (ax 100.73))(HJ (n rlj4) (ax -130.05))(HJ (n rlj5) (ax 49.86))(FRP (n rf) (c 0.01 0.03 -0.01) (f 72.77 2.28 22.32))(HJ (n rlj6) (ax 45.11))(HJ (n llj1) (ax -33.26))(HJ (n llj2) (ax 33.27))(HJ (n llj3) (ax 100.08))(HJ (n llj4) (ax -129.82))(HJ (n llj5) (ax 49.93))(FRP (n lf) (c 0.04 0.08 -0.01) (f -49.78 -2.72 35.32))(HJ (n llj6) (ax -45.12)) +{Tue 20:32:30 Step:1546} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1551} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1555} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1560} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1565} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1567} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:30 Step:1567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1571} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1575} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1578} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1582} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1583} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1588} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1592} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1597} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1600} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1601} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1605} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1605} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1610} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1615} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:31 Step:1615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1617} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:31 Step:1617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1620} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1624} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:32 Step:1625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1627} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1682} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1686} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1690} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1693} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1695} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1698} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1699} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1702} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1706} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1711} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1711} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1713} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1713} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1715} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1718} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:34 Step:1727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1730} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:34 Step:1765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1767} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:34 Step:1767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1769} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:34 Step:1769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1771} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:34 Step:1771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1773} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1773} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1776} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:35 Step:1781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1783} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1785} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1788} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:35 Step:1789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1791} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1793} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1796} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1849} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1851} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1853} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1855} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1855} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1857} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1857} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1859} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1859} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1862} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1869} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1869} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1871} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1873} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1876} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1879} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1879} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1882} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1883} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1885} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1885} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1888} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1889} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1891} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1911} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:38 Step:1945} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1947} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:38 Step:1947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1953} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:1953} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1955} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:1955} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1957} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1959} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:1959} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1961} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1963} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:1963} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1965} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:1965} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1967} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1970} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:1971} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1973} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:1973} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1975} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1977} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:1977} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1980} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:1981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1983} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:1983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1986} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:2049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2051} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2051} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2054} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:2055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2057} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2057} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2059} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2059} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2062} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:2063} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2064} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 416.69))(GS (sl 0) (sr 0) (t 106.19) (pm PlayOn))(foul 7)(GYR (n torso) (rt 272.38 -290.65 -21.78))(ACC (n torso) (a 6.32 7.62 -1.88))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax 0.00))(HJ (n raj1) (ax 43.28))(HJ (n raj2) (ax -47.99))(HJ (n raj3) (ax 66.72))(HJ (n raj4) (ax 90.01))(HJ (n laj1) (ax 43.29))(HJ (n laj2) (ax 47.87))(HJ (n laj3) (ax -66.71))(HJ (n laj4) (ax -90.01))(HJ (n rlj1) (ax -18.32))(HJ (n rlj2) (ax 30.19))(HJ (n rlj3) (ax 3.73))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax 73.72))(FRP (n rf) (c -0.06 -0.10 0.03) (f 9.56 -10.03 1.67))(HJ (n rlj6) (ax 43.58))(HJ (n llj1) (ax -58.65))(HJ (n llj2) (ax -19.78))(HJ (n llj3) (ax -13.92))(HJ (n llj4) (ax 1.00))(HJ (n llj5) (ax 73.78))(HJ (n llj6) (ax -43.73)) +{Tue 20:32:41 Step:2065} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2169} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2171} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2171} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2173} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2173} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2175} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2177} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2179} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2179} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2193} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2195} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2195} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2198} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2199} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2201} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2201} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2204} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2205} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2208} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2215} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2216} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2219} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2219} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2221} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2251} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2253} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2255} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2255} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2257} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2260} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:45 Step:2261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2263} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2265} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2265} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2267} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2267} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2269} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2269} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2271} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2271} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2273} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2273} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2275} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2275} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2277} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2277} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2279} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2279} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2281} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2289} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2292} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:46 Step:2293} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2295} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2295} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2297} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2297} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2299} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2299} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2303} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:46 Step:2303} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2305} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2305} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2307} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2307} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2309} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2313} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2315} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2315} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2317} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2317} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2319} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2319} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2321} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2321} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2323} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2323} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2325} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2325} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2327} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2327} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2330} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2333} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2333} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2341} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2344} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2345} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2347} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2347} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2350} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2351} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2353} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2353} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2355} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2357} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2383} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2387} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2389} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2391} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2391} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2394} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2395} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2397} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2397} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2399} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2399} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2401} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2401} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2403} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2403} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2405} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2405} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2407} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2407} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2409} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2409} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2411} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2411} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2413} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2413} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2417} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2425} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:49 Step:2426} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 423.93))(GS (sl 0) (sr 0) (t 113.43) (pm PlayOn))(foul 7)(GYR (n torso) (rt 222.90 -95.77 -208.82))(ACC (n torso) (a 14.96 -15.28 10.92))(HJ (n hj1) (ax -1.83))(HJ (n hj2) (ax -1.87))(HJ (n raj1) (ax -36.47))(HJ (n raj2) (ax -17.20))(HJ (n raj3) (ax 14.55))(HJ (n raj4) (ax 72.16))(HJ (n laj1) (ax -38.89))(HJ (n laj2) (ax 8.02))(HJ (n laj3) (ax -11.06))(HJ (n laj4) (ax -72.79))(HJ (n rlj1) (ax -27.97))(HJ (n rlj2) (ax 10.99))(HJ (n rlj3) (ax 97.02))(HJ (n rlj4) (ax -12.99))(HJ (n rlj5) (ax -28.95))(FRP (n rf) (c -0.03 -0.08 -0.02) (f -7.81 22.89 101.75))(HJ (n rlj6) (ax 9.21))(HJ (n llj1) (ax -75.86))(HJ (n llj2) (ax 38.12))(HJ (n llj3) (ax 87.52))(HJ (n llj4) (ax -5.91))(HJ (n llj5) (ax -29.29))(HJ (n llj6) (ax -10.22)) +{Tue 20:32:49 Step:2427} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2427} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2429} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2429} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2431} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2431} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2433} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2433} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2435} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2435} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2437} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2437} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2439} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2443} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2446} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:50 Step:2447} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2449} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2449} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2451} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2457} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2457} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2459} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2461} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2463} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2471} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2473} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2475} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2475} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2477} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2477} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2480} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:50 Step:2481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2483} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2483} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2485} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2493} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2495} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2497} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2497} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2499} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2525} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2527} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2527} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2529} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2531} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2531} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2534} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2541} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2543} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2543} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2545} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2548} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2551} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2554} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2557} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2561} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2565} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2569} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2573} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2577} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2579} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 426.98))(GS (sl 0) (sr 0) (t 116.49) (pm PlayOn))(foul 7)(GYR (n torso) (rt -289.84 93.01 -29.80))(ACC (n torso) (a 5.58 -7.06 -0.88))(HJ (n hj1) (ax -7.17))(HJ (n hj2) (ax 0.89))(See (mypos -10.84 -0.96 0.09) (myorien -162.43) (ballpos -9.00 0.00 0.04))(HJ (n raj1) (ax -90.15))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax -126.88))(HJ (n raj4) (ax 92.87))(HJ (n laj1) (ax -90.15))(HJ (n laj2) (ax -1.01))(HJ (n laj3) (ax 120.06))(HJ (n laj4) (ax -92.44))(HJ (n rlj1) (ax -89.33))(HJ (n rlj2) (ax -40.02))(HJ (n rlj3) (ax -21.11))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax -46.57))(FRP (n rf) (c -0.04 -0.08 -0.01) (f -2.41 49.96 24.23))(HJ (n rlj6) (ax 40.96))(HJ (n llj1) (ax -91.37))(HJ (n llj2) (ax 47.19))(HJ (n llj3) (ax 106.08))(HJ (n llj4) (ax -121.83))(HJ (n llj5) (ax -47.02))(FRP (n lf) (c 0.06 0.09 -0.03) (f 24.51 37.87 27.00))(HJ (n llj6) (ax -41.12)) +{Tue 20:32:53 Step:2580} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2645} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2647} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2649} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2651} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2654} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2657} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2659} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2661} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2663} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:55 Step:2663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2666} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:55 Step:2667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2669} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:56 Step:2703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2795} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2795} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2798} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:58 Step:2799} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2801} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2801} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2817} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2821} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2821} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2824} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 431.88))(GS (sl 0) (sr 0) (t 121.39) (pm PlayOn))(foul 7)(GYR (n torso) (rt -69.09 3.92 -4.81))(ACC (n torso) (a -2.53 -4.47 11.39))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax 0.02))(HJ (n raj1) (ax -72.24))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 40.42))(HJ (n raj4) (ax 83.40))(HJ (n laj1) (ax -72.25))(HJ (n laj2) (ax -1.06))(HJ (n laj3) (ax -39.83))(HJ (n laj4) (ax -90.48))(HJ (n rlj1) (ax -27.22))(HJ (n rlj2) (ax -33.23))(HJ (n rlj3) (ax 97.19))(HJ (n rlj4) (ax -111.73))(HJ (n rlj5) (ax 49.95))(FRP (n rf) (c 0.04 0.06 -0.01) (f 37.73 10.32 26.12))(HJ (n rlj6) (ax 44.95))(HJ (n llj1) (ax -31.84))(HJ (n llj2) (ax 33.32))(HJ (n llj3) (ax 99.99))(HJ (n llj4) (ax -111.86))(HJ (n llj5) (ax 49.79))(FRP (n lf) (c -0.04 -0.08 -0.01) (f -28.80 -14.08 30.52))(HJ (n llj6) (ax -45.00)) +{Tue 20:32:59 Step:2824} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2825} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2827} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2831} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2831} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2833} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2836} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2841} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2841} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2843} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2843} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2845} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2859} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2862} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:33:00 Step:2863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2865} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2865} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2869} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2871} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2875} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:33:00 Step:2875} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2879} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:33:00 Step:2879} Server_Comm.py: Received a new packet while on world.update()! diff --git a/logs/2025-11-04_20.31.56__UCVIPQ/Gym_1.log b/logs/2025-11-04_20.31.56__UCVIPQ/Gym_1.log new file mode 100644 index 0000000..731d85e --- /dev/null +++ b/logs/2025-11-04_20.31.56__UCVIPQ/Gym_1.log @@ -0,0 +1,750 @@ +{Tue 20:31:56 Step:5} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:7} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:56 Step:7} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:05 Step:8} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:05 Step:482} Server_Comm.py: The agent lost 473 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:487} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:489} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:492} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:499} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:501} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:504} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:507} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:510} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:513} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:515} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:517} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:519} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:522} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:528} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:531} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:531} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:533} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:536} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:539} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:542} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:543} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:545} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:548} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:551} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:553} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:555} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:560} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:563} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:565} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:568} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:574} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:578} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:581} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:584} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:588} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:594} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:594} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:08 Step:595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:599} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:601} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:601} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:604} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:626} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:627} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:629} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:09 Step:629} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:632} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:633} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:635} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:09 Step:635} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:637} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:09 Step:637} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:639} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:09 Step:639} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:641} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:09 Step:641} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:10 Step:673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:675} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:679} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:681} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:682} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 388.76))(GS (sl 0) (sr 0) (t 13.38) (pm PlayOn))(foul 7)(GYR (n torso) (rt 217.27 -35.88 128.86))(ACC (n torso) (a 5.00 -6.99 -1.93))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax 0.00))(HJ (n raj1) (ax -14.37))(HJ (n raj2) (ax -6.96))(HJ (n raj3) (ax 8.55))(HJ (n raj4) (ax -1.00))(HJ (n laj1) (ax -12.81))(HJ (n laj2) (ax 27.85))(HJ (n laj3) (ax -8.61))(HJ (n laj4) (ax -33.93))(HJ (n rlj1) (ax -50.17))(HJ (n rlj2) (ax 17.88))(HJ (n rlj3) (ax 26.28))(HJ (n rlj4) (ax -87.80))(HJ (n rlj5) (ax 16.74))(HJ (n rlj6) (ax -4.96))(HJ (n llj1) (ax -50.23))(HJ (n llj2) (ax -17.89))(HJ (n llj3) (ax 26.28))(HJ (n llj4) (ax -87.79))(HJ (n llj5) (ax 16.72))(HJ (n llj6) (ax 4.99)) +{Tue 20:32:12 Step:773} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:775} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:777} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:779} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:779} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:781} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:783} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:785} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:788} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:13 Step:793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:795} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:808} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:13 Step:809} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:813} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:816} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:13 Step:817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:820} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:13 Step:821} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:824} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:13 Step:825} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:827} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:829} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:829} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:832} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 391.76))(GS (sl 0) (sr 0) (t 16.38) (pm PlayOn))(foul 7)(GYR (n torso) (rt 178.72 -43.13 207.36))(ACC (n torso) (a -6.04 -3.29 -16.82))(HJ (n hj1) (ax -49.15))(HJ (n hj2) (ax -49.15))(HJ (n raj1) (ax -67.34))(HJ (n raj2) (ax 1.08))(HJ (n raj3) (ax 109.68))(HJ (n raj4) (ax 37.69))(HJ (n laj1) (ax -62.24))(HJ (n laj2) (ax 20.12))(HJ (n laj3) (ax -108.89))(HJ (n laj4) (ax -87.76))(HJ (n rlj1) (ax -0.34))(HJ (n rlj2) (ax 24.52))(HJ (n rlj3) (ax 24.95))(HJ (n rlj4) (ax -129.12))(HJ (n rlj5) (ax 22.46))(HJ (n rlj6) (ax -20.00))(HJ (n llj1) (ax -43.79))(HJ (n llj2) (ax -19.41))(HJ (n llj3) (ax 9.43))(HJ (n llj4) (ax -128.86))(HJ (n llj5) (ax 11.20))(HJ (n llj6) (ax 22.42)) +{Tue 20:32:14 Step:832} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:14 Step:833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:836} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:14 Step:837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:839} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:842} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:14 Step:843} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:849} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:853} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:853} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:855} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:855} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:858} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:14 Step:859} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:862} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:14 Step:863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:865} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:865} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:867} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:870} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:14 Step:871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:873} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:875} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:931} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:934} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:16 Step:937} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:940} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:16 Step:941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:943} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:943} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:945} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:945} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:948} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:16 Step:949} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:951} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:953} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:953} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:954} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:955} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:957} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1031} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:18 Step:1033} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1035} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1035} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1037} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1039} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1039} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1041} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1041} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1043} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1043} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1045} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1053} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1056} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:18 Step:1059} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1061} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1061} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1064} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:18 Step:1065} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1067} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1067} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1069} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1069} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:20 Step:1121} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1123} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1123} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1125} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1125} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1127} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1127} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1131} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1133} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1135} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1135} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1139} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:20 Step:1139} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1142} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:20 Step:1143} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1145} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1145} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1147} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1147} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1149} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1149} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1151} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1151} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1153} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1153} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1155} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1157} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1157} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1159} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1159} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1162} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1165} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1169} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1169} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1171} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1171} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1173} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1173} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1176} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1177} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1180} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1181} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1183} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1183} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1187} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1187} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1190} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1193} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1195} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1195} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1197} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1197} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1199} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1199} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1201} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1201} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1204} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1205} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1207} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1207} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1209} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1211} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1211} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1214} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:22 Step:1215} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1217} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1219} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1221} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1221} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1224} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:22 Step:1225} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1227} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1227} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1229} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1231} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1231} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1234} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:23 Step:1293} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1295} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1297} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1299} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1299} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1303} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1305} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1305} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1308} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1309} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1311} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1311} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1315} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1317} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1319} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1319} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1321} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1321} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1323} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1323} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1326} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1333} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1333} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1335} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1335} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1337} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1337} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1338} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 401.88))(GS (sl 0) (sr 0) (t 26.50) (pm PlayOn))(foul 7)(GYR (n torso) (rt -381.88 -52.99 -160.57))(ACC (n torso) (a 2.63 -20.02 46.82))(HJ (n hj1) (ax -69.31))(HJ (n hj2) (ax -49.79))(HJ (n raj1) (ax -94.64))(HJ (n raj2) (ax 3.63))(HJ (n raj3) (ax 62.13))(HJ (n raj4) (ax 28.45))(HJ (n laj1) (ax -58.45))(HJ (n laj2) (ax 2.27))(HJ (n laj3) (ax -61.88))(HJ (n laj4) (ax -28.17))(HJ (n rlj1) (ax 0.62))(HJ (n rlj2) (ax -7.09))(HJ (n rlj3) (ax 66.14))(HJ (n rlj4) (ax -108.87))(HJ (n rlj5) (ax 77.34))(FRP (n rf) (c -0.05 0.08 -0.02) (f -42.98 4.74 31.04))(HJ (n rlj6) (ax -19.67))(HJ (n llj1) (ax -0.82))(HJ (n llj2) (ax 1.66))(HJ (n llj3) (ax 71.42))(HJ (n llj4) (ax -105.69))(HJ (n llj5) (ax 78.91))(FRP (n lf) (c 0.01 0.01 -0.01) (f 65.03 -14.92 65.95))(HJ (n llj6) (ax 14.24)) +{Tue 20:32:24 Step:1340} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1341} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1343} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1343} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1345} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1345} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1348} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:25 Step:1383} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1385} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1391} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1393} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1435} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1437} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1437} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1440} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1441} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1443} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:27 Step:1443} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1446} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1459} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1461} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:27 Step:1461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1464} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1465} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1467} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:27 Step:1467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1471} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1475} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1475} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1477} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:27 Step:1477} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1480} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1483} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:27 Step:1483} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1486} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1494} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1497} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:28 Step:1501} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1503} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:28 Step:1507} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1509} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:28 Step:1511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1514} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1518} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1557} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1559} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1562} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1565} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1568} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1571} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1574} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1576} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1580} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1580} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1584} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1587} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:30 Step:1587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1590} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1594} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1597} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:30 Step:1597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1600} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1601} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1604} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1605} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1609} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1614} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1618} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1622} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1628} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1661} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1663} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:31 Step:1663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1667} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:32 Step:1667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1669} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1672} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:32 Step:1673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1676} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:32 Step:1677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1679} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1681} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1683} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1685} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1689} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:32 Step:1689} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1691} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1693} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1695} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1697} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1700} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:32 Step:1701} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 409.13))(GS (sl 0) (sr 0) (t 33.76) (pm PlayOn))(foul 7)(foul 7)(GYR (n torso) (rt -105.41 71.97 13.37))(ACC (n torso) (a -4.99 -2.98 11.14))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (G1L (pol 4.84 13.16 25.37)) (G2L (pol 4.50 40.62 21.05)) (F1L (pol 11.65 -35.73 16.27)) (mypos -10.54 -0.75 0.29) (myorien 147.20) (ballpos -9.00 0.00 0.04) (L (pol 5.00 60.03 5.25) (pol 11.63 -35.52 16.18)) (L (pol 10.75 -59.97 10.44) (pol 11.64 -35.75 16.13)) (L (pol 4.61 -22.11 15.82) (pol 3.02 59.93 2.99)) (L (pol 4.60 -22.22 15.88) (pol 5.84 -7.27 17.30)))(HJ (n raj1) (ax -117.79))(HJ (n raj2) (ax 1.88))(HJ (n raj3) (ax 117.33))(HJ (n raj4) (ax 85.69))(HJ (n laj1) (ax -117.78))(HJ (n laj2) (ax -1.89))(HJ (n laj3) (ax -117.44))(HJ (n laj4) (ax -85.56))(HJ (n rlj1) (ax -90.01))(HJ (n rlj2) (ax 26.58))(HJ (n rlj3) (ax 105.53))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax 78.35))(HJ (n rlj6) (ax 47.58))(HJ (n llj1) (ax -92.64))(HJ (n llj2) (ax -26.54))(HJ (n llj3) (ax 94.06))(HJ (n llj4) (ax 1.00))(HJ (n llj5) (ax 78.47))(HJ (n llj6) (ax -47.52)) +{Tue 20:32:32 Step:1701} World_Parser.py: Unknown root tag: bytearray(b'foul') at 72, +Msg: (time (now 409.13))(GS (sl 0) (sr 0) (t 33.76) (pm PlayOn))(foul 7)(foul 7)(GYR (n torso) (rt -105.41 71.97 13.37))(ACC (n torso) (a -4.99 -2.98 11.14))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (G1L (pol 4.84 13.16 25.37)) (G2L (pol 4.50 40.62 21.05)) (F1L (pol 11.65 -35.73 16.27)) (mypos -10.54 -0.75 0.29) (myorien 147.20) (ballpos -9.00 0.00 0.04) (L (pol 5.00 60.03 5.25) (pol 11.63 -35.52 16.18)) (L (pol 10.75 -59.97 10.44) (pol 11.64 -35.75 16.13)) (L (pol 4.61 -22.11 15.82) (pol 3.02 59.93 2.99)) (L (pol 4.60 -22.22 15.88) (pol 5.84 -7.27 17.30)))(HJ (n raj1) (ax -117.79))(HJ (n raj2) (ax 1.88))(HJ (n raj3) (ax 117.33))(HJ (n raj4) (ax 85.69))(HJ (n laj1) (ax -117.78))(HJ (n laj2) (ax -1.89))(HJ (n laj3) (ax -117.44))(HJ (n laj4) (ax -85.56))(HJ (n rlj1) (ax -90.01))(HJ (n rlj2) (ax 26.58))(HJ (n rlj3) (ax 105.53))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax 78.35))(HJ (n rlj6) (ax 47.58))(HJ (n llj1) (ax -92.64))(HJ (n llj2) (ax -26.54))(HJ (n llj3) (ax 94.06))(HJ (n llj4) (ax 1.00))(HJ (n llj5) (ax 78.47))(HJ (n llj6) (ax -47.52)) +{Tue 20:32:32 Step:1701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1703} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1705} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1707} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1709} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1712} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1713} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1758} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1761} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:34 Step:1761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1764} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:35 Step:1811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1813} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1819} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1821} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1821} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1823} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1825} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1825} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1827} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1831} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:35 Step:1831} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1833} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1835} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1838} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:35 Step:1839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1842} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1899} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1903} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1907} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1910} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1913} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1916} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1919} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1922} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1931} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1933} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:38 Step:1933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1936} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1937} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1940} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1943} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:38 Step:1943} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1946} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1949} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:38 Step:1951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1953} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:1979} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1981} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:1981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1983} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:1983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1987} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:1987} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1990} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:1991} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1993} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:1993} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1996} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:1997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1999} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:1999} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2001} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:2001} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2004} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:2005} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2007} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:2007} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2012} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:2013} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2016} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:2019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2022} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:40 Step:2023} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2028} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:40 Step:2029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2032} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:40 Step:2033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2037} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:40 Step:2037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2040} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:2077} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2079} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2079} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2082} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:2083} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2085} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2085} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2087} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2087} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2089} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 416.89))(GS (sl 0) (sr 0) (t 41.52) (pm PlayOn))(foul 7)(GYR (n torso) (rt 235.00 -10.38 75.84))(ACC (n torso) (a 4.67 8.98 13.25))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.13))(See (P (team Gym) (id 1) (llowerarm (pol 0.11 33.56 17.22))) (G1L (pol 4.99 42.31 -25.58)) (F1L (pol 11.88 -6.76 -46.04)) (mypos -10.49 -0.99 0.25) (myorien 121.39) (ballpos -9.00 0.00 0.04) (L (pol 4.61 60.23 -26.13) (pol 11.88 -6.85 -45.90)) (L (pol 11.74 -60.00 -31.48) (pol 11.89 -6.80 -45.93)) (L (pol 4.83 10.35 -46.59) (pol 2.80 59.86 -28.45)) (L (pol 4.83 10.52 -46.39) (pol 6.03 29.33 -41.54)))(HJ (n raj1) (ax 36.34))(HJ (n raj2) (ax -41.00))(HJ (n raj3) (ax 47.53))(HJ (n raj4) (ax 95.74))(HJ (n laj1) (ax 36.33))(HJ (n laj2) (ax -1.01))(HJ (n laj3) (ax -47.70))(HJ (n laj4) (ax -90.11))(HJ (n rlj1) (ax -36.48))(HJ (n rlj2) (ax 20.62))(HJ (n rlj3) (ax 3.27))(HJ (n rlj4) (ax 0.99))(HJ (n rlj5) (ax 69.30))(HJ (n rlj6) (ax 47.31))(HJ (n llj1) (ax -36.62))(HJ (n llj2) (ax -21.78))(HJ (n llj3) (ax 3.13))(HJ (n llj4) (ax 1.00))(HJ (n llj5) (ax 69.26))(HJ (n llj6) (ax -47.30)) +{Tue 20:32:41 Step:2090} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2219} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2219} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2222} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2223} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2225} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2225} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2228} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2231} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2233} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2233} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2235} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2235} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2237} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2333} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2335} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2335} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2337} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 421.85))(GS (sl 0) (sr 0) (t 46.48) (pm PlayOn))(foul 7)(GYR (n torso) (rt -35.03 -29.16 46.79))(ACC (n torso) (a -3.39 14.23 10.20))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax 0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.15 -30.73 -2.62)) (llowerarm (pol 0.19 47.21 -1.88)) (rfoot (pol 0.46 -5.50 -58.85)) (lfoot (pol 0.45 3.91 -58.83))) (G1L (pol 5.05 42.96 -22.97)) (F1L (pol 11.94 -4.45 -38.80)) (mypos -10.44 -1.05 0.26) (myorien 115.92) (ballpos -9.00 0.00 0.04) (L (pol 4.66 60.02 -24.82) (pol 11.96 -4.89 -38.58)) (L (pol 12.45 -60.25 -22.14) (pol 11.96 -4.76 -38.69)) (L (pol 4.90 10.43 -40.19) (pol 2.85 60.05 -27.35)) (L (pol 4.91 10.68 -40.12) (pol 6.12 28.53 -36.58)))(HJ (n raj1) (ax 8.33))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 69.22))(HJ (n raj4) (ax 83.93))(HJ (n laj1) (ax 8.34))(HJ (n laj2) (ax 27.04))(HJ (n laj3) (ax -69.13))(HJ (n laj4) (ax -84.13))(HJ (n rlj1) (ax -39.99))(HJ (n rlj2) (ax 24.93))(HJ (n rlj3) (ax 14.61))(HJ (n rlj4) (ax 0.97))(HJ (n rlj5) (ax 52.93))(HJ (n rlj6) (ax 47.24))(HJ (n llj1) (ax -40.01))(HJ (n llj2) (ax -26.05))(HJ (n llj3) (ax 14.61))(HJ (n llj4) (ax 0.97))(HJ (n llj5) (ax 52.92))(HJ (n llj6) (ax -47.32)) +{Tue 20:32:46 Step:2337} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2337} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2340} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2425} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2427} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2427} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2429} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2429} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2432} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:49 Step:2433} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2435} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2437} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2437} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2439} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2441} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2441} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2443} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2443} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2446} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:49 Step:2449} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2451} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2453} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2453} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2455} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2457} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2457} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2459} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2461} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2463} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2466} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:49 Step:2467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2469} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2473} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2476} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 424.63))(GS (sl 0) (sr 0) (t 49.26) (pm PlayOn))(foul 7)(GYR (n torso) (rt 229.26 -221.88 -88.48))(ACC (n torso) (a 18.26 4.40 -8.12))(HJ (n hj1) (ax -19.57))(HJ (n hj2) (ax -19.53))(HJ (n raj1) (ax -13.63))(HJ (n raj2) (ax -22.44))(HJ (n raj3) (ax 94.21))(HJ (n raj4) (ax 86.88))(HJ (n laj1) (ax -13.63))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax -94.69))(HJ (n laj4) (ax -85.70))(HJ (n rlj1) (ax -85.71))(HJ (n rlj2) (ax -44.66))(HJ (n rlj3) (ax 99.74))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax -39.76))(FRP (n rf) (c 0.06 -0.08 0.01) (f -44.36 -26.08 170.39))(HJ (n rlj6) (ax 11.22))(HJ (n llj1) (ax -21.83))(HJ (n llj2) (ax -23.65))(HJ (n llj3) (ax 38.01))(HJ (n llj4) (ax -18.83))(HJ (n llj5) (ax -39.38))(HJ (n llj6) (ax -11.21)) +{Tue 20:32:52 Step:2559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2561} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2563} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2567} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2573} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2575} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2578} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2581} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2584} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2588} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2592} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2596} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2599} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2605} Server_Comm.py: The agent lost 5 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2651} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:53 Step:2651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2657} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2659} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2661} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2665} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2665} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2668} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2673} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2677} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2681} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2683} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2685} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2687} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2689} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2689} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2690} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:54 Step:2691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2693} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2695} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2783} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:56 Step:2783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2786} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:56 Step:2787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2789} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:56 Step:2789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2792} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:56 Step:2795} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2797} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:56 Step:2797} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2800} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:56 Step:2800} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2801} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2804} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2809} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2811} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2814} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2814} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2817} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2820} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2821} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2824} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2825} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2827} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2830} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2831} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2834} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2837} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2841} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2841} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2844} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:58 Step:2899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2901} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2903} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2908} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2912} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2918} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2923} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 433.56))(GS (sl 0) (sr 0) (t 58.20) (pm PlayOn))(foul 7)(foul 7)(GYR (n torso) (rt 271.39 -8.31 -0.29))(ACC (n torso) (a 0.22 -9.25 18.12))(HJ (n hj1) (ax -28.13))(HJ (n hj2) (ax -28.11))(See (P (team Gym) (id 1) (rlowerarm (pol 0.28 -8.44 -39.44)) (llowerarm (pol 0.28 39.54 -48.67)) (rfoot (pol 0.38 -13.68 -36.64)) (lfoot (pol 0.38 49.04 -48.15))) (G2R (pol 25.63 -58.43 12.46)) (G1R (pol 25.82 -53.36 12.56)) (F1L (pol 11.86 53.20 -1.59)) (F1R (pol 27.96 -34.62 11.49)) (B (pol 2.00 -26.15 2.69)) (mypos -10.68 -1.03 0.35) (myorien 58.37) (ballpos -9.00 0.00 0.04) (L (pol 10.71 -60.06 9.27) (pol 15.38 -11.25 9.66)) (L (pol 25.68 -60.11 10.22) (pol 27.96 -34.82 11.38)) (L (pol 9.09 59.82 -3.58) (pol 11.85 53.24 -1.63)) (L (pol 27.96 -34.49 11.33) (pol 11.88 53.28 -1.67)) (L (pol 24.23 -48.53 11.03) (pol 23.91 -60.00 10.45)) (L (pol 24.27 -48.41 10.90) (pol 26.00 -49.03 11.10)) (L (pol 12.69 -53.23 9.94) (pol 12.49 -47.63 10.24)) (L (pol 12.51 -47.50 10.40) (pol 11.69 -43.26 10.19)) (L (pol 11.70 -43.56 10.20) (pol 10.49 -41.38 10.03)) (L (pol 10.50 -41.61 10.35) (pol 9.35 -44.03 9.75)) (L (pol 9.35 -44.09 9.91) (pol 8.75 -51.43 9.07)) (L (pol 8.76 -51.20 9.38) (pol 9.07 -58.86 8.82)) (L (pol 9.06 -58.85 8.68) (pol 9.34 -59.89 8.87)) (L (pol 11.95 -60.12 9.26) (pol 12.31 -58.92 9.68)) (L (pol 12.30 -58.66 9.50) (pol 12.74 -53.37 10.00)))(HJ (n raj1) (ax -68.77))(HJ (n raj2) (ax 4.99))(HJ (n raj3) (ax 73.42))(HJ (n raj4) (ax -1.63))(HJ (n laj1) (ax -68.77))(HJ (n laj2) (ax -4.99))(HJ (n laj3) (ax -73.41))(HJ (n laj4) (ax 1.60))(HJ (n rlj1) (ax -13.21))(HJ (n rlj2) (ax -45.00))(HJ (n rlj3) (ax 100.01))(HJ (n rlj4) (ax -132.39))(HJ (n rlj5) (ax 46.32))(FRP (n rf) (c -0.03 -0.08 -0.02) (f 111.92 24.17 -37.40))(HJ (n rlj6) (ax 5.59))(HJ (n llj1) (ax -16.11))(HJ (n llj2) (ax 45.01))(HJ (n llj3) (ax 100.01))(HJ (n llj4) (ax -132.10))(HJ (n llj5) (ax 44.09))(FRP (n lf) (c 0.03 -0.08 -0.02) (f -107.42 34.23 -40.93))(HJ (n llj6) (ax 0.50)) +{Tue 20:32:59 Step:2923} World_Parser.py: Unknown root tag: bytearray(b'foul') at 72, +Msg: (time (now 433.56))(GS (sl 0) (sr 0) (t 58.20) (pm PlayOn))(foul 7)(foul 7)(GYR (n torso) (rt 271.39 -8.31 -0.29))(ACC (n torso) (a 0.22 -9.25 18.12))(HJ (n hj1) (ax -28.13))(HJ (n hj2) (ax -28.11))(See (P (team Gym) (id 1) (rlowerarm (pol 0.28 -8.44 -39.44)) (llowerarm (pol 0.28 39.54 -48.67)) (rfoot (pol 0.38 -13.68 -36.64)) (lfoot (pol 0.38 49.04 -48.15))) (G2R (pol 25.63 -58.43 12.46)) (G1R (pol 25.82 -53.36 12.56)) (F1L (pol 11.86 53.20 -1.59)) (F1R (pol 27.96 -34.62 11.49)) (B (pol 2.00 -26.15 2.69)) (mypos -10.68 -1.03 0.35) (myorien 58.37) (ballpos -9.00 0.00 0.04) (L (pol 10.71 -60.06 9.27) (pol 15.38 -11.25 9.66)) (L (pol 25.68 -60.11 10.22) (pol 27.96 -34.82 11.38)) (L (pol 9.09 59.82 -3.58) (pol 11.85 53.24 -1.63)) (L (pol 27.96 -34.49 11.33) (pol 11.88 53.28 -1.67)) (L (pol 24.23 -48.53 11.03) (pol 23.91 -60.00 10.45)) (L (pol 24.27 -48.41 10.90) (pol 26.00 -49.03 11.10)) (L (pol 12.69 -53.23 9.94) (pol 12.49 -47.63 10.24)) (L (pol 12.51 -47.50 10.40) (pol 11.69 -43.26 10.19)) (L (pol 11.70 -43.56 10.20) (pol 10.49 -41.38 10.03)) (L (pol 10.50 -41.61 10.35) (pol 9.35 -44.03 9.75)) (L (pol 9.35 -44.09 9.91) (pol 8.75 -51.43 9.07)) (L (pol 8.76 -51.20 9.38) (pol 9.07 -58.86 8.82)) (L (pol 9.06 -58.85 8.68) (pol 9.34 -59.89 8.87)) (L (pol 11.95 -60.12 9.26) (pol 12.31 -58.92 9.68)) (L (pol 12.30 -58.66 9.50) (pol 12.74 -53.37 10.00)))(HJ (n raj1) (ax -68.77))(HJ (n raj2) (ax 4.99))(HJ (n raj3) (ax 73.42))(HJ (n raj4) (ax -1.63))(HJ (n laj1) (ax -68.77))(HJ (n laj2) (ax -4.99))(HJ (n laj3) (ax -73.41))(HJ (n laj4) (ax 1.60))(HJ (n rlj1) (ax -13.21))(HJ (n rlj2) (ax -45.00))(HJ (n rlj3) (ax 100.01))(HJ (n rlj4) (ax -132.39))(HJ (n rlj5) (ax 46.32))(FRP (n rf) (c -0.03 -0.08 -0.02) (f 111.92 24.17 -37.40))(HJ (n rlj6) (ax 5.59))(HJ (n llj1) (ax -16.11))(HJ (n llj2) (ax 45.01))(HJ (n llj3) (ax 100.01))(HJ (n llj4) (ax -132.10))(HJ (n llj5) (ax 44.09))(FRP (n lf) (c 0.03 -0.08 -0.02) (f -107.42 34.23 -40.93))(HJ (n llj6) (ax 0.50)) +{Tue 20:32:59 Step:2923} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2926} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2927} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2930} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2930} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:59 Step:2943} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2945} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2945} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2947} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2949} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2949} Server_Comm.py: Received a new packet while on world.update()! diff --git a/logs/2025-11-04_20.31.56__WVAFON/Gym_1.log b/logs/2025-11-04_20.31.56__WVAFON/Gym_1.log new file mode 100644 index 0000000..455b2e1 --- /dev/null +++ b/logs/2025-11-04_20.31.56__WVAFON/Gym_1.log @@ -0,0 +1,952 @@ +{Tue 20:31:56 Step:3} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:5} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:56 Step:5} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:8} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:31:56 Step:9} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:11} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:56 Step:11} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:56 Step:14} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:05 Step:15} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:06 Step:483} Server_Comm.py: The agent lost 467 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:491} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:494} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:497} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:497} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:500} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:501} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:503} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:503} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:505} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:505} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:507} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:507} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:510} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:513} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:516} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:519} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:522} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:525} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:528} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:532} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:535} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:537} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:540} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:543} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:543} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:546} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:549} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:552} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:555} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:558} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:561} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:564} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:567} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:573} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:575} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:579} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:581} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:584} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:589} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:591} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:595} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:598} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:602} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:605} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:605} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:607} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:607} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:610} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:615} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:619} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:623} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:627} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:627} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:630} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:631} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:634} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:635} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:637} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:09 Step:637} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:640} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:640} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:645} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:645} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:648} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:10 Step:649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:653} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:10 Step:653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:657} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:11 Step:713} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:721} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:721} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:723} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:723} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:727} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:11 Step:727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:730} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:11 Step:731} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:733} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:741} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:743} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:746} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:12 Step:747} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 390.86))(GS (sl 0) (sr 0) (t 14.56) (pm PlayOn))(foul 7)(GYR (n torso) (rt -83.94 -41.78 -151.52))(ACC (n torso) (a -0.95 1.44 -4.05))(HJ (n hj1) (ax 8.03))(HJ (n hj2) (ax -49.15))(See (P (team Gym) (id 1) (rlowerarm (pol 0.26 -41.69 -34.22)) (llowerarm (pol 0.25 35.74 -26.52)) (rfoot (pol 0.51 5.93 -37.14)) (lfoot (pol 0.51 -6.80 -38.95))) (G2R (pol 26.33 5.66 -40.41)) (G1R (pol 26.41 11.50 -38.77)) (F1R (pol 28.33 32.16 -31.98)) (F2R (pol 28.03 -18.92 -44.92)) (B (pol 2.38 19.77 -37.96)) (mypos -11.35 -0.40 0.05) (myorien 5.71) (ballpos -9.00 0.00 0.04) (L (pol 14.88 -46.59 -41.42) (pol 15.41 50.96 -19.40)) (L (pol 28.04 -19.25 -44.90) (pol 28.28 32.40 -31.92)) (L (pol 28.32 32.48 -31.92) (pol 12.78 60.18 -11.18)) (L (pol 28.06 -19.01 -45.02) (pol 12.25 -60.24 -37.00)) (L (pol 24.78 17.91 -38.64) (pol 24.71 0.36 -43.39)) (L (pol 24.77 17.56 -38.73) (pol 26.55 17.07 -38.93)) (L (pol 24.71 0.36 -43.26) (pol 26.45 0.97 -43.07)) (L (pol 13.36 10.28 -41.06) (pol 13.05 16.80 -39.08)) (L (pol 13.04 16.64 -39.20) (pol 12.19 21.61 -37.44)) (L (pol 12.19 21.17 -37.53) (pol 10.97 22.51 -36.93)) (L (pol 10.97 22.74 -36.80) (pol 9.86 19.49 -38.35)) (L (pol 9.86 19.47 -38.03) (pol 9.36 11.36 -41.02)) (L (pol 9.35 11.31 -40.93) (pol 9.74 2.50 -43.13)) (L (pol 9.76 2.47 -42.96) (pol 10.85 -2.14 -43.75)) (L (pol 10.82 -2.21 -43.82) (pol 12.05 -1.25 -43.53)) (L (pol 12.05 -1.01 -43.93) (pol 13.00 3.84 -42.56)) (L (pol 12.98 3.48 -42.72) (pol 13.36 10.45 -41.06)))(HJ (n raj1) (ax -107.31))(HJ (n raj2) (ax -7.60))(HJ (n raj3) (ax 116.21))(HJ (n raj4) (ax 91.15))(HJ (n laj1) (ax -107.30))(HJ (n laj2) (ax 9.11))(HJ (n laj3) (ax -116.18))(HJ (n laj4) (ax -91.13))(HJ (n rlj1) (ax -16.19))(HJ (n rlj2) (ax 25.41))(HJ (n rlj3) (ax 14.89))(HJ (n rlj4) (ax -67.68))(HJ (n rlj5) (ax 42.71))(HJ (n rlj6) (ax 2.46))(HJ (n llj1) (ax -16.74))(HJ (n llj2) (ax -24.42))(HJ (n llj3) (ax 14.98))(HJ (n llj4) (ax -68.52))(HJ (n llj5) (ax 45.34))(HJ (n llj6) (ax 10.67)) +{Tue 20:32:12 Step:749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:751} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:754} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:14 Step:853} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:855} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:855} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:857} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:857} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:859} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:859} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:861} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:864} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:14 Step:865} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:867} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:869} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:869} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:871} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:14 Step:873} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:875} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:875} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:877} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:879} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:879} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:880} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 393.52))(GS (sl 0) (sr 0) (t 17.22) (pm PlayOn))(foul 7)(GYR (n torso) (rt 20.78 73.83 -84.46))(ACC (n torso) (a -2.27 5.97 -13.31))(HJ (n hj1) (ax 6.58))(HJ (n hj2) (ax 7.89))(HJ (n raj1) (ax -50.85))(HJ (n raj2) (ax 1.01))(HJ (n raj3) (ax 17.85))(HJ (n raj4) (ax 5.30))(HJ (n laj1) (ax -50.85))(HJ (n laj2) (ax -1.05))(HJ (n laj3) (ax -18.04))(HJ (n laj4) (ax -4.73))(HJ (n rlj1) (ax -12.12))(HJ (n rlj2) (ax -40.98))(HJ (n rlj3) (ax 96.97))(HJ (n rlj4) (ax -62.84))(HJ (n rlj5) (ax 6.38))(HJ (n rlj6) (ax -23.56))(HJ (n llj1) (ax -7.83))(HJ (n llj2) (ax 46.14))(HJ (n llj3) (ax 97.60))(HJ (n llj4) (ax -130.00))(HJ (n llj5) (ax 6.87))(HJ (n llj6) (ax 23.37)) +{Tue 20:32:14 Step:881} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 393.54))(GS (sl 0) (sr 0) (t 17.24) (pm PlayOn))(foul 7)(GYR (n torso) (rt -165.29 203.69 -190.48))(ACC (n torso) (a 1.06 -2.51 8.55))(HJ (n hj1) (ax 7.41))(HJ (n hj2) (ax 8.88))(See (P (team Gym) (id 1) (rfoot (pol 0.38 -44.42 -45.55))) (G2R (pol 25.78 27.40 9.37)) (G1R (pol 25.89 31.65 7.49)) (F1R (pol 27.84 48.21 -1.73)) (F2R (pol 27.60 8.92 14.64)) (B (pol 1.89 30.92 -6.39)) (mypos -10.84 -0.26 0.43) (myorien -24.32) (ballpos -9.00 0.00 0.04) (L (pol 14.58 -12.96 19.95) (pol 13.23 60.03 -8.01)) (L (pol 27.59 8.71 14.73) (pol 27.81 48.18 -2.07)) (L (pol 27.82 48.13 -1.97) (pol 17.92 60.25 -7.68)) (L (pol 27.66 8.80 14.54) (pol 9.77 -60.10 21.17)) (L (pol 24.26 35.49 3.79) (pol 24.20 22.34 9.40)) (L (pol 24.27 35.58 3.96) (pol 26.02 35.12 4.16)) (L (pol 24.17 22.21 9.59) (pol 25.99 22.77 9.47)) (L (pol 12.87 29.11 5.64) (pol 12.54 33.99 3.39)) (L (pol 12.56 33.95 3.42) (pol 11.67 37.74 1.76)) (L (pol 11.66 37.65 1.51) (pol 10.46 38.45 0.95)) (L (pol 10.46 38.55 0.63) (pol 9.33 35.49 2.12)) (L (pol 9.34 36.07 1.88) (pol 8.85 29.20 4.68)) (L (pol 8.85 29.07 4.68) (pol 9.28 22.83 7.55)) (L (pol 9.29 22.43 7.63) (pol 10.37 19.23 9.12)) (L (pol 10.35 18.97 9.24) (pol 11.57 20.11 9.00)) (L (pol 11.57 19.93 9.03) (pol 12.52 23.98 7.75)) (L (pol 12.50 23.99 7.76) (pol 12.83 29.02 5.73)))(HJ (n raj1) (ax -57.85))(HJ (n raj2) (ax 0.99))(HJ (n raj3) (ax 10.99))(HJ (n raj4) (ax -1.73))(HJ (n laj1) (ax -57.85))(HJ (n laj2) (ax -1.01))(HJ (n laj3) (ax -11.20))(HJ (n laj4) (ax 2.40))(HJ (n rlj1) (ax -12.93))(HJ (n rlj2) (ax -47.99))(HJ (n rlj3) (ax 103.33))(HJ (n rlj4) (ax -55.83))(HJ (n rlj5) (ax -1.09))(HJ (n rlj6) (ax -30.54))(HJ (n llj1) (ax -7.93))(HJ (n llj2) (ax 39.13))(HJ (n llj3) (ax 104.60))(HJ (n llj4) (ax -137.00))(HJ (n llj5) (ax -1.96))(HJ (n llj6) (ax 30.36)) +{Tue 20:32:14 Step:881} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:881} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:883} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:885} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:885} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:887} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:887} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:899} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:901} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:903} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:905} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:907} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:908} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 394.08))(GS (sl 0) (sr 0) (t 17.78) (pm PlayOn))(foul 7)(GYR (n torso) (rt -190.33 -173.21 -29.84))(ACC (n torso) (a -2.90 2.28 7.04))(HJ (n hj1) (ax 0.38))(HJ (n hj2) (ax -38.77))(HJ (n raj1) (ax -71.83))(HJ (n raj2) (ax 0.99))(HJ (n raj3) (ax -3.26))(HJ (n raj4) (ax 4.95))(HJ (n laj1) (ax -71.83))(HJ (n laj2) (ax -0.98))(HJ (n laj3) (ax 3.01))(HJ (n laj4) (ax -4.26))(HJ (n rlj1) (ax -34.39))(HJ (n rlj2) (ax 28.75))(HJ (n rlj3) (ax -14.07))(HJ (n rlj4) (ax -72.68))(HJ (n rlj5) (ax 33.43))(HJ (n rlj6) (ax -22.71))(HJ (n llj1) (ax -36.46))(HJ (n llj2) (ax -21.75))(HJ (n llj3) (ax -20.97))(HJ (n llj4) (ax -41.44))(HJ (n llj5) (ax 44.15))(FRP (n lf) (c -0.04 -0.08 -0.01) (f 8.79 -6.64 66.73))(HJ (n llj6) (ax 16.17)) +{Tue 20:32:15 Step:910} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:15 Step:911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:913} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:915} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:919} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:921} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:923} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:926} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:15 Step:929} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:929} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:931} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:931} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:933} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:936} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:16 Step:937} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:939} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:945} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:947} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:949} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:949} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:951} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:954} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:16 Step:955} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:957} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:957} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:960} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:16 Step:973} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:975} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:975} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:977} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:977} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:980} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:983} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:985} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:985} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:989} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:995} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:997} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:1000} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:1001} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:1004} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:1005} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:1007} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:1010} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:1011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:1013} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:1013} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:1015} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:1015} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:1018} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:1019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:1021} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:1021} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:1023} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:1023} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:1026} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:1026} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1035} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:1035} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1038} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:18 Step:1039} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:1041} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1095} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1097} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1097} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1100} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:19 Step:1101} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1104} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:19 Step:1107} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1109} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1109} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1112} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:19 Step:1112} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:19 Step:1113} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1115} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1115} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1117} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1120} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:20 Step:1123} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 398.38))(GS (sl 0) (sr 0) (t 22.08) (pm PlayOn))(foul 7)(GYR (n torso) (rt 226.26 -192.61 -288.52))(ACC (n torso) (a 6.12 -4.66 10.11))(HJ (n hj1) (ax 98.31))(HJ (n hj2) (ax -35.08))(See (P (team Gym) (id 1) (llowerarm (pol 0.29 -9.54 -15.77)) (rfoot (pol 0.53 1.25 -50.84)) (lfoot (pol 0.55 -9.90 -52.45))) (G2R (pol 26.15 -53.76 28.34)) (G1R (pol 26.13 -54.38 32.88)) (F1R (pol 27.77 -53.72 51.55)) (F2R (pol 28.16 -50.92 9.92)) (B (pol 2.23 -44.20 16.26)) (mypos -11.12 0.61 0.34) (myorien -35.49) (ballpos -9.00 0.00 0.04) (L (pol 28.17 -51.00 9.71) (pol 27.74 -53.83 51.88)) (L (pol 28.19 -50.91 10.07) (pol 10.69 -45.18 -50.78)) (L (pol 24.44 -52.33 37.54) (pol 24.58 -51.63 23.49)) (L (pol 24.45 -52.35 37.45) (pol 26.22 -52.63 37.18)) (L (pol 24.58 -51.60 23.62) (pol 26.35 -51.77 24.31)) (L (pol 13.14 -51.15 29.43) (pol 12.77 -51.47 34.79)) (L (pol 12.76 -51.37 34.53) (pol 11.82 -51.33 38.42)) (L (pol 11.79 -51.66 38.51) (pol 10.59 -51.15 39.07)) (L (pol 10.60 -51.08 38.84) (pol 9.54 -50.64 35.60)) (L (pol 9.52 -50.75 35.48) (pol 9.16 -50.25 28.46)) (L (pol 9.14 -50.38 28.37) (pol 9.66 -50.27 21.10)) (L (pol 9.68 -50.26 21.35) (pol 10.80 -50.23 18.60)) (L (pol 10.79 -50.28 18.79) (pol 12.00 -50.41 19.99)) (L (pol 12.01 -50.88 19.93) (pol 12.86 -50.67 23.98)) (L (pol 12.88 -50.57 24.12) (pol 13.12 -50.90 29.30)))(HJ (n raj1) (ax -107.34))(HJ (n raj2) (ax -20.64))(HJ (n raj3) (ax 102.21))(HJ (n raj4) (ax 76.02))(HJ (n laj1) (ax -107.34))(HJ (n laj2) (ax 25.89))(HJ (n laj3) (ax -102.34))(HJ (n laj4) (ax -76.13))(HJ (n rlj1) (ax -20.60))(HJ (n rlj2) (ax 12.49))(HJ (n rlj3) (ax -17.66))(HJ (n rlj4) (ax -33.75))(HJ (n rlj5) (ax 57.30))(HJ (n rlj6) (ax 29.03))(HJ (n llj1) (ax -25.32))(HJ (n llj2) (ax -8.60))(HJ (n llj3) (ax -7.16))(HJ (n llj4) (ax -24.75))(HJ (n llj5) (ax 50.23))(HJ (n llj6) (ax 4.81)) +{Tue 20:32:20 Step:1129} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1203} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1204} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1205} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1208} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1209} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1212} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1213} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1215} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1215} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1218} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:22 Step:1219} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1221} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1221} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1225} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:22 Step:1225} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1228} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:22 Step:1229} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1232} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:22 Step:1233} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1235} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1235} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1238} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:22 Step:1241} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1243} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1243} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1245} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1245} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1247} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1250} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 400.92))(GS (sl 0) (sr 0) (t 24.62) (pm PlayOn))(foul 7)(foul 7)(GYR (n torso) (rt 430.51 -93.34 234.36))(ACC (n torso) (a -17.25 0.52 -18.30))(HJ (n hj1) (ax -45.11))(HJ (n hj2) (ax -49.57))(HJ (n raj1) (ax -68.79))(HJ (n raj2) (ax 1.10))(HJ (n raj3) (ax 58.95))(HJ (n raj4) (ax 15.80))(HJ (n laj1) (ax -68.79))(HJ (n laj2) (ax -8.00))(HJ (n laj3) (ax -58.34))(HJ (n laj4) (ax -16.36))(HJ (n rlj1) (ax -18.17))(HJ (n rlj2) (ax -45.00))(HJ (n rlj3) (ax 97.14))(HJ (n rlj4) (ax -136.92))(HJ (n rlj5) (ax 27.20))(HJ (n rlj6) (ax -28.22))(HJ (n llj1) (ax -2.12))(HJ (n llj2) (ax 45.00))(HJ (n llj3) (ax 96.03))(HJ (n llj4) (ax -128.18))(HJ (n llj5) (ax 22.41))(HJ (n llj6) (ax 26.72)) +{Tue 20:32:22 Step:1250} World_Parser.py: Unknown root tag: bytearray(b'foul') at 72, +Msg: (time (now 400.92))(GS (sl 0) (sr 0) (t 24.62) (pm PlayOn))(foul 7)(foul 7)(GYR (n torso) (rt 430.51 -93.34 234.36))(ACC (n torso) (a -17.25 0.52 -18.30))(HJ (n hj1) (ax -45.11))(HJ (n hj2) (ax -49.57))(HJ (n raj1) (ax -68.79))(HJ (n raj2) (ax 1.10))(HJ (n raj3) (ax 58.95))(HJ (n raj4) (ax 15.80))(HJ (n laj1) (ax -68.79))(HJ (n laj2) (ax -8.00))(HJ (n laj3) (ax -58.34))(HJ (n laj4) (ax -16.36))(HJ (n rlj1) (ax -18.17))(HJ (n rlj2) (ax -45.00))(HJ (n rlj3) (ax 97.14))(HJ (n rlj4) (ax -136.92))(HJ (n rlj5) (ax 27.20))(HJ (n rlj6) (ax -28.22))(HJ (n llj1) (ax -2.12))(HJ (n llj2) (ax 45.00))(HJ (n llj3) (ax 96.03))(HJ (n llj4) (ax -128.18))(HJ (n llj5) (ax 22.41))(HJ (n llj6) (ax 26.72)) +{Tue 20:32:22 Step:1251} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:22 Step:1251} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1253} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1255} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1255} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1257} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1259} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1269} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1271} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1271} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1273} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1273} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1277} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1279} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1321} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1323} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1323} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1326} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1327} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1330} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1334} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1335} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1337} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1337} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1339} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1341} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1341} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1344} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1345} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1348} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1349} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1352} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1353} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1355} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1355} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1357} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1357} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1360} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:25 Step:1361} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1364} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:25 Step:1364} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1365} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1367} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1367} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1370} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:25 Step:1373} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1377} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:25 Step:1377} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1382} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1413} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1415} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1415} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1418} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1419} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1421} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1421} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1424} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1425} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1427} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1427} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1430} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1431} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1433} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1433} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1436} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1437} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1439} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1443} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1443} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1444} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 404.80))(GS (sl 0) (sr 0) (t 28.50) (pm PlayOn))(foul 7)(GYR (n torso) (rt 389.36 -104.42 -135.13))(ACC (n torso) (a 12.91 14.28 8.14))(HJ (n hj1) (ax 18.63))(HJ (n hj2) (ax -27.97))(HJ (n raj1) (ax -3.36))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax -83.88))(HJ (n raj4) (ax 85.62))(HJ (n laj1) (ax 6.42))(HJ (n laj2) (ax 30.03))(HJ (n laj3) (ax 91.77))(HJ (n laj4) (ax -86.11))(HJ (n rlj1) (ax -92.88))(HJ (n rlj2) (ax -39.95))(HJ (n rlj3) (ax 52.83))(HJ (n rlj4) (ax -73.81))(HJ (n rlj5) (ax -42.83))(HJ (n rlj6) (ax -9.84))(HJ (n llj1) (ax -85.33))(HJ (n llj2) (ax 40.04))(HJ (n llj3) (ax 100.07))(HJ (n llj4) (ax 1.00))(HJ (n llj5) (ax -43.01))(HJ (n llj6) (ax 12.53)) +{Tue 20:32:26 Step:1446} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1447} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1450} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:26 Step:1451} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1454} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1458} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1459} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1462} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1466} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1469} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:27 Step:1469} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:27 Step:1479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1483} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1483} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1485} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:27 Step:1485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1489} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1494} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1501} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1503} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:28 Step:1503} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1507} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1507} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1512} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1515} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:28 Step:1515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1519} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1522} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1526} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1561} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1563} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1565} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1567} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1569} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1575} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1579} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1581} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1583} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1583} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1585} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1587} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:29 Step:1587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1590} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1595} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1599} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1602} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1606} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1607} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1609} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:30 Step:1609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1612} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1615} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:30 Step:1615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1618} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1621} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:30 Step:1621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1624} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1627} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:30 Step:1627} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1637} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1640} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1643} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:31 Step:1643} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1646} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:31 Step:1649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:31 Step:1651} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1679} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1682} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:32 Step:1683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1687} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1690} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:32 Step:1691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1698} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:32 Step:1701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1703} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1707} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:32 Step:1707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1709} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1711} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1711} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1714} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1717} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1720} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1721} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1723} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1723} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1726} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1729} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1731} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1731} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1733} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1733} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1736} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1739} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1741} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1741} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1744} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:34 Step:1781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1783} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:34 Step:1783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1784} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1789} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:34 Step:1789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1791} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:34 Step:1791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1793} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:34 Step:1793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1795} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:34 Step:1795} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1797} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:34 Step:1797} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1799} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:34 Step:1799} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1802} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:35 Step:1833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1837} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:35 Step:1837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1841} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:35 Step:1841} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:35 Step:1844} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1875} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1877} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1879} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1879} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1882} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1883} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1886} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1887} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1889} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1891} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1894} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1897} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1900} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1904} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1907} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1910} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1913} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:37 Step:1913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1916} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1920} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1924} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1925} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1928} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 414.47))(GS (sl 0) (sr 0) (t 38.18) (pm PlayOn))(foul 7)(foul 7)(GYR (n torso) (rt 1.10 -231.80 11.68))(ACC (n torso) (a -4.56 10.81 -6.54))(HJ (n hj1) (ax -49.09))(HJ (n hj2) (ax -48.89))(HJ (n raj1) (ax -49.65))(HJ (n raj2) (ax -5.00))(HJ (n raj3) (ax 87.72))(HJ (n raj4) (ax 5.43))(HJ (n laj1) (ax -49.65))(HJ (n laj2) (ax 5.04))(HJ (n laj3) (ax -87.78))(HJ (n laj4) (ax -5.30))(HJ (n rlj1) (ax -21.38))(HJ (n rlj2) (ax -41.61))(HJ (n rlj3) (ax 100.05))(HJ (n rlj4) (ax -127.53))(HJ (n rlj5) (ax 30.54))(FRP (n rf) (c 0.03 -0.09 -0.01) (f -108.07 45.67 200.31))(HJ (n rlj6) (ax 44.91))(HJ (n llj1) (ax -21.06))(HJ (n llj2) (ax 41.76))(HJ (n llj3) (ax 100.11))(HJ (n llj4) (ax -126.30))(HJ (n llj5) (ax 31.68))(HJ (n llj6) (ax -44.91)) +{Tue 20:32:37 Step:1928} World_Parser.py: Unknown root tag: bytearray(b'foul') at 72, +Msg: (time (now 414.47))(GS (sl 0) (sr 0) (t 38.18) (pm PlayOn))(foul 7)(foul 7)(GYR (n torso) (rt 1.10 -231.80 11.68))(ACC (n torso) (a -4.56 10.81 -6.54))(HJ (n hj1) (ax -49.09))(HJ (n hj2) (ax -48.89))(HJ (n raj1) (ax -49.65))(HJ (n raj2) (ax -5.00))(HJ (n raj3) (ax 87.72))(HJ (n raj4) (ax 5.43))(HJ (n laj1) (ax -49.65))(HJ (n laj2) (ax 5.04))(HJ (n laj3) (ax -87.78))(HJ (n laj4) (ax -5.30))(HJ (n rlj1) (ax -21.38))(HJ (n rlj2) (ax -41.61))(HJ (n rlj3) (ax 100.05))(HJ (n rlj4) (ax -127.53))(HJ (n rlj5) (ax 30.54))(FRP (n rf) (c 0.03 -0.09 -0.01) (f -108.07 45.67 200.31))(HJ (n rlj6) (ax 44.91))(HJ (n llj1) (ax -21.06))(HJ (n llj2) (ax 41.76))(HJ (n llj3) (ax 100.11))(HJ (n llj4) (ax -126.30))(HJ (n llj5) (ax 31.68))(HJ (n llj6) (ax -44.91)) +{Tue 20:32:37 Step:1928} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1929} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1932} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:37 Step:1932} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:37 Step:1933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1934} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:37 Step:1939} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1943} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:38 Step:1943} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1947} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1949} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:40 Step:2025} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2029} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:40 Step:2029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2032} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:40 Step:2033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2036} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:40 Step:2037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2041} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2042} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2043} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2045} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:40 Step:2045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2047} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:40 Step:2047} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2050} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:40 Step:2053} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2057} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:40 Step:2057} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2060} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:40 Step:2061} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2064} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:40 Step:2065} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2067} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2067} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2070} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:2071} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2073} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2073} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2077} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:2077} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2079} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2079} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2082} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:42 Step:2123} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2125} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2125} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2127} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2127} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2129} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2129} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2131} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2131} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2133} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2136} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:42 Step:2137} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2139} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2139} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2141} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2141} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2143} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2235} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2237} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2237} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2241} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2241} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2245} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2245} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2247} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2250} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:45 Step:2251} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2253} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2256} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:45 Step:2257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2259} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2261} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2264} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:45 Step:2267} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2269} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2269} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2271} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2271} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2274} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:45 Step:2275} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2277} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2277} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2280} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:46 Step:2327} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2329} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2329} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2331} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2334} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:46 Step:2335} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2337} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:46 Step:2337} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2339} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2342} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2343} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2346} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2347} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2350} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2351} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2353} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2353} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2357} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2357} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2359} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2359} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2362} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2363} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2365} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2365} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2368} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2369} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2373} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2373} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2375} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2375} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2379} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2379} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2381} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2381} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2384} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2389} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2391} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2391} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2394} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2395} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2398} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2399} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2402} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2403} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2407} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2407} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2409} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2409} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2412} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2413} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2416} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2417} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2419} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2419} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2421} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2421} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2425} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:49 Step:2425} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2428} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:49 Step:2428} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2429} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2432} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:49 Step:2433} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2435} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2435} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2439} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:49 Step:2439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2441} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2443} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2443} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2446} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:49 Step:2447} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2449} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2449} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2451} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2451} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2453} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2453} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2455} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2458} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:49 Step:2459} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2461} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2463} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2465} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2468} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2475} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2477} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2478} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2481} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2507} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2509} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2511} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2513} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2516} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:51 Step:2519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2521} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2523} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2526} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:51 Step:2527} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2531} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2531} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2533} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2536} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:51 Step:2537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2539} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2542} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:51 Step:2543} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2545} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2547} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2549} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2551} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 426.92))(GS (sl 0) (sr 0) (t 50.64) (pm PlayOn))(foul 7)(GYR (n torso) (rt -11.57 159.98 -225.39))(ACC (n torso) (a -0.33 -0.36 -2.03))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.18 -26.19 -44.28)) (llowerarm (pol 0.18 21.37 -44.21))) (G2R (pol 26.01 -27.69 46.26)) (G1R (pol 26.04 -26.32 41.56)) (F1R (pol 27.98 -25.22 22.89)) (B (pol 2.01 -30.78 33.01)) (mypos -10.96 -0.38 0.16) (myorien 47.85) (ballpos -9.00 0.00 0.04) (L (pol 11.18 -33.96 55.27) (pol 15.10 -22.43 1.36)) (L (pol 27.98 -24.96 22.81) (pol 10.76 -10.64 -59.53)) (L (pol 24.42 -28.14 36.67) (pol 24.31 -31.11 50.48)) (L (pol 24.45 -27.60 36.67) (pol 26.18 -27.75 37.10)) (L (pol 24.34 -31.34 50.50) (pol 26.08 -31.28 50.09)) (L (pol 12.97 -29.49 42.69) (pol 12.67 -28.22 37.34)) (L (pol 12.69 -28.47 37.47) (pol 11.80 -27.47 33.26)) (L (pol 11.82 -27.47 33.36) (pol 10.60 -27.52 32.02)) (L (pol 10.59 -27.12 32.06) (pol 9.48 -28.61 35.00)) (L (pol 9.47 -28.06 35.06) (pol 8.99 -30.32 41.84)) (L (pol 8.98 -29.81 41.96) (pol 9.37 -31.83 48.98)) (L (pol 9.37 -31.85 48.96) (pol 10.46 -33.17 52.33)) (L (pol 10.46 -32.83 52.50) (pol 11.66 -32.59 51.51)) (L (pol 11.68 -32.35 51.73) (pol 12.61 -31.18 47.88)) (L (pol 12.62 -31.10 47.97) (pol 12.97 -29.64 42.55)))(HJ (n raj1) (ax -17.13))(HJ (n raj2) (ax 1.01))(HJ (n raj3) (ax -15.66))(HJ (n raj4) (ax 93.08))(HJ (n laj1) (ax -21.11))(HJ (n laj2) (ax 1.61))(HJ (n laj3) (ax 15.34))(HJ (n laj4) (ax -92.36))(HJ (n rlj1) (ax -40.05))(HJ (n rlj2) (ax 25.89))(HJ (n rlj3) (ax 43.37))(HJ (n rlj4) (ax -120.90))(HJ (n rlj5) (ax -46.40))(HJ (n rlj6) (ax 45.18))(HJ (n llj1) (ax -17.48))(HJ (n llj2) (ax -15.82))(HJ (n llj3) (ax 9.81))(HJ (n llj4) (ax -54.50))(HJ (n llj5) (ax -46.83))(FRP (n lf) (c 0.04 0.09 -0.01) (f -4.97 51.80 44.70))(HJ (n llj6) (ax -46.49)) +{Tue 20:32:51 Step:2551} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2553} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:51 Step:2555} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2555} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:52 Step:2559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2563} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2565} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2568} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2568} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:52 Step:2577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2578} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2582} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2583} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2585} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2587} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2590} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2593} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2595} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2598} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2602} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2602} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2606} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2607} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2609} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:53 Step:2609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2654} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2657} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2660} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:54 Step:2661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2663} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:54 Step:2663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:54 Step:2666} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:56 Step:2757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2759} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:56 Step:2759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2763} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:56 Step:2763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2766} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 431.22))(GS (sl 0) (sr 0) (t 54.94) (pm PlayOn))(foul 7)(GYR (n torso) (rt -55.43 -0.03 0.06))(ACC (n torso) (a 0.00 -1.47 -10.36))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax 0.00))(HJ (n raj1) (ax 11.40))(HJ (n raj2) (ax -13.04))(HJ (n raj3) (ax 54.78))(HJ (n raj4) (ax 77.11))(HJ (n laj1) (ax 11.40))(HJ (n laj2) (ax 13.04))(HJ (n laj3) (ax -54.78))(HJ (n laj4) (ax -77.11))(HJ (n rlj1) (ax -36.16))(HJ (n rlj2) (ax 24.99))(HJ (n rlj3) (ax 18.67))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax 45.78))(HJ (n rlj6) (ax 43.54))(HJ (n llj1) (ax -36.05))(HJ (n llj2) (ax -24.99))(HJ (n llj3) (ax 18.77))(HJ (n llj4) (ax 0.99))(HJ (n llj5) (ax 45.84))(HJ (n llj6) (ax -43.55)) +{Tue 20:32:56 Step:2767} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:56 Step:2767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2770} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:56 Step:2771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2773} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2779} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:56 Step:2779} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2782} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:56 Step:2783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2786} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2790} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2796} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2798} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 431.86))(GS (sl 0) (sr 0) (t 55.58) (pm PlayOn))(foul 7)(GYR (n torso) (rt 9.29 -0.01 -0.03))(ACC (n torso) (a 0.02 -1.49 9.80))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax 0.00))(HJ (n raj1) (ax -35.97))(HJ (n raj2) (ax -15.01))(HJ (n raj3) (ax -1.82))(HJ (n raj4) (ax 1.27))(HJ (n laj1) (ax -35.97))(HJ (n laj2) (ax 15.05))(HJ (n laj3) (ax 1.82))(HJ (n laj4) (ax -1.26))(HJ (n rlj1) (ax -64.10))(HJ (n rlj2) (ax 24.99))(HJ (n rlj3) (ax 48.29))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax 10.70))(HJ (n rlj6) (ax 43.60))(HJ (n llj1) (ax -63.09))(HJ (n llj2) (ax -24.95))(HJ (n llj3) (ax 49.26))(HJ (n llj4) (ax 1.00))(HJ (n llj5) (ax 10.76))(HJ (n llj6) (ax -43.60)) +{Tue 20:32:57 Step:2799} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2801} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2801} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2804} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2814} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2821} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2821} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2826} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2829} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2829} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2832} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:58 Step:2835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2837} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2840} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:58 Step:2841} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2843} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2843} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2845} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2845} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2847} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2850} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2897} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2899} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2901} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2904} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2910} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2913} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2915} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2917} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2924} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:33:00 Step:2929} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2931} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2934} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:33:00 Step:2935} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2938} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:33:00 Step:2939} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2941} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2943} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2943} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2946} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:33:00 Step:2949} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2951} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2953} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2955} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2957} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? diff --git a/logs/2025-11-04_20.31.57__JLPTYY/Gym_1.log b/logs/2025-11-04_20.31.57__JLPTYY/Gym_1.log new file mode 100644 index 0000000..4ebe2e4 --- /dev/null +++ b/logs/2025-11-04_20.31.57__JLPTYY/Gym_1.log @@ -0,0 +1,939 @@ +{Tue 20:31:57 Step:3} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:57 Step:5} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:57 Step:5} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:57 Step:7} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:57 Step:7} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:57 Step:9} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:57 Step:9} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:57 Step:11} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:57 Step:11} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:57 Step:13} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:58 Step:13} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:58 Step:15} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:58 Step:15} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:58 Step:17} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:58 Step:17} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:58 Step:19} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:58 Step:19} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:58 Step:21} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:58 Step:21} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:58 Step:23} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:58 Step:25} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:58 Step:25} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:58 Step:28} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:31:58 Step:28} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:58 Step:29} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:58 Step:31} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:31:58 Step:31} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:31:58 Step:34} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:05 Step:35} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:05 Step:405} Server_Comm.py: The agent lost 369 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:405} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:406} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:06 Step:407} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:409} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:409} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:413} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:413} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:415} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:415} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:419} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:419} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:422} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:426} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:429} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:433} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:06 Step:433} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:435} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:435} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:437} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:439} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:06 Step:439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:441} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:443} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:445} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:447} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:06 Step:449} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:449} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:452} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:453} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:457} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:457} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:459} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:459} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:461} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:464} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:465} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:468} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:473} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:475} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:475} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:478} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:07 Step:479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:486} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:487} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:489} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:491} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:07 Step:493} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:07 Step:493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:498} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:498} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:08 Step:499} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:501} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:501} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:503} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:503} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:505} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:505} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:507} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:507} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:509} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:513} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:517} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:522} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:522} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:08 Step:523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:525} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:08 Step:525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:528} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:528} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:08 Step:529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:532} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:536} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:08 Step:537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:08 Step:540} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:546} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:546} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:551} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:555} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:559} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:565} Server_Comm.py: The agent lost 5 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:570} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:570} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:574} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:574} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:577} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:09 Step:577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:582} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:09 Step:583} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:09 Step:586} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:10 Step:587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:590} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:10 Step:590} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:594} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:10 Step:595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:598} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:10 Step:599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:601} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:601} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:604} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:10 Step:605} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:607} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:607} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:609} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:612} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:10 Step:613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:614} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:10 Step:615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:619} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:621} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:623} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:10 Step:623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:627} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:10 Step:627} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:628} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 389.10))(GS (sl 0) (sr 0) (t 79.96) (pm PlayOn))(foul 7)(GYR (n torso) (rt -70.66 43.23 113.08))(ACC (n torso) (a -5.94 2.84 8.90))(HJ (n hj1) (ax 63.15))(HJ (n hj2) (ax -49.19))(HJ (n raj1) (ax -117.69))(HJ (n raj2) (ax 5.30))(HJ (n raj3) (ax 117.83))(HJ (n raj4) (ax 89.89))(HJ (n laj1) (ax -117.69))(HJ (n laj2) (ax 2.43))(HJ (n laj3) (ax -118.12))(HJ (n laj4) (ax -89.54))(HJ (n rlj1) (ax 7.10))(HJ (n rlj2) (ax 30.17))(HJ (n rlj3) (ax 97.32))(HJ (n rlj4) (ax -136.52))(HJ (n rlj5) (ax 73.86))(HJ (n rlj6) (ax -21.67))(HJ (n llj1) (ax 7.08))(HJ (n llj2) (ax -21.23))(HJ (n llj3) (ax 102.30))(HJ (n llj4) (ax -131.65))(HJ (n llj5) (ax 72.47))(HJ (n llj6) (ax 22.75)) +{Tue 20:32:10 Step:631} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:10 Step:631} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:10 Step:634} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:11 Step:639} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:640} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:645} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:646} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:649} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:11 Step:653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:11 Step:655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:723} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:724} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:725} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:12 Step:727} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:12 Step:727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:729} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:730} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:13 Step:731} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:733} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:734} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:13 Step:735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:739} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:739} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:745} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:747} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:749} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 391.52))(GS (sl 0) (sr 0) (t 82.38) (pm PlayOn))(foul 7)(GYR (n torso) (rt -412.64 -40.35 -62.77))(ACC (n torso) (a 24.40 -2.37 0.46))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax 0.00))(See (P (team Gym) (id 1) (llowerarm (pol 0.15 59.05 39.27))) (G2R (pol 25.38 52.78 38.55)) (G1R (pol 25.41 55.89 34.47)) (F2R (pol 27.33 34.16 52.91)) (B (pol 1.37 42.71 38.22)) (mypos -10.35 0.17 0.16) (myorien -12.86) (ballpos -9.00 0.00 0.04) (L (pol 12.01 22.22 58.18) (pol 10.67 59.95 22.78)) (L (pol 27.27 34.13 52.63) (pol 26.01 59.95 23.97)) (L (pol 27.33 34.11 52.89) (pol 20.78 24.56 57.72)) (L (pol 23.69 56.70 29.38) (pol 23.75 47.44 41.52)) (L (pol 23.73 56.80 29.16) (pol 25.53 56.62 29.98)) (L (pol 23.74 47.03 41.86) (pol 25.54 48.07 41.25)) (L (pol 12.34 51.77 35.71) (pol 11.99 55.13 30.99)) (L (pol 12.04 54.98 30.86) (pol 11.11 57.46 27.34)) (L (pol 11.11 57.71 27.22) (pol 9.88 57.83 26.21)) (L (pol 9.89 57.98 26.30) (pol 8.79 56.00 29.08)) (L (pol 8.79 55.77 29.45) (pol 8.35 51.02 35.92)) (L (pol 8.35 51.33 35.86) (pol 8.81 46.04 42.27)) (L (pol 8.85 45.81 42.33) (pol 9.95 43.40 44.95)) (L (pol 9.96 43.39 44.81) (pol 11.17 44.37 43.88)) (L (pol 11.16 44.35 44.09) (pol 12.03 47.77 40.54)) (L (pol 12.04 48.20 40.61) (pol 12.35 51.83 35.66)))(HJ (n raj1) (ax 72.17))(HJ (n raj2) (ax -3.28))(HJ (n raj3) (ax -53.34))(HJ (n raj4) (ax 1.74))(HJ (n laj1) (ax 72.17))(HJ (n laj2) (ax -1.35))(HJ (n laj3) (ax 53.21))(HJ (n laj4) (ax -2.75))(HJ (n rlj1) (ax -94.52))(HJ (n rlj2) (ax -14.06))(HJ (n rlj3) (ax 98.42))(HJ (n rlj4) (ax -28.16))(HJ (n rlj5) (ax -50.30))(HJ (n rlj6) (ax 47.81))(HJ (n llj1) (ax -77.41))(HJ (n llj2) (ax 14.01))(HJ (n llj3) (ax 105.71))(HJ (n llj4) (ax 1.11))(HJ (n llj5) (ax -50.84))(HJ (n llj6) (ax -47.70)) +{Tue 20:32:13 Step:750} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:13 Step:759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:761} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:765} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:13 Step:765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:768} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:13 Step:769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:771} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:13 Step:771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:13 Step:774} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:14 Step:775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:780} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:14 Step:781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:783} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:785} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 392.24))(GS (sl 0) (sr 0) (t 83.10) (pm PlayOn))(foul 7)(GYR (n torso) (rt 146.32 202.66 -267.78))(ACC (n torso) (a -21.70 -15.29 -4.55))(HJ (n hj1) (ax 75.76))(HJ (n hj2) (ax -14.06))(See (P (team Gym) (id 1) (llowerarm (pol 0.15 1.92 51.15))) (G2R (pol 25.03 9.99 9.93)) (G1R (pol 25.14 10.65 5.24)) (F1R (pol 27.12 11.38 -13.87)) (F2R (pol 26.80 5.74 28.86)) (B (pol 1.13 6.12 -13.39)) (mypos -10.05 -0.41 0.15) (myorien 7.22) (ballpos -9.00 0.00 0.04) (L (pol 13.89 0.08 51.51) (pol 14.46 14.45 -37.32)) (L (pol 26.87 5.74 29.19) (pol 27.14 11.45 -14.13)) (L (pol 27.12 11.26 -14.27) (pol 11.28 20.18 -58.47)) (L (pol 26.85 5.52 29.28) (pol 12.09 -3.80 59.94)) (L (pol 23.53 9.42 0.14) (pol 23.42 7.56 14.76)) (L (pol 23.52 9.67 0.01) (pol 25.26 9.51 0.61)) (L (pol 23.39 7.78 14.75) (pol 25.17 7.76 14.24)) (L (pol 12.07 8.61 6.45) (pol 11.78 8.72 0.52)) (L (pol 11.78 9.06 0.44) (pol 10.91 9.76 -3.64)) (L (pol 10.91 9.50 -3.80) (pol 9.71 9.55 -5.35)) (L (pol 9.71 9.78 -5.36) (pol 8.58 9.06 -2.39)) (L (pol 8.59 9.10 -2.55) (pol 8.06 7.94 5.30)) (L (pol 8.05 8.25 5.28) (pol 8.47 6.93 13.53)) (L (pol 8.48 7.33 13.46) (pol 9.55 6.66 17.24)) (L (pol 9.57 6.78 17.07) (pol 10.77 7.05 16.22)) (L (pol 10.77 7.11 16.16) (pol 11.69 7.46 11.91)) (L (pol 11.69 7.60 12.12) (pol 12.06 8.45 6.41)))(HJ (n raj1) (ax -99.64))(HJ (n raj2) (ax -19.68))(HJ (n raj3) (ax 108.34))(HJ (n raj4) (ax 58.04))(HJ (n laj1) (ax 78.81))(HJ (n laj2) (ax 5.81))(HJ (n laj3) (ax 67.24))(HJ (n laj4) (ax -0.51))(HJ (n rlj1) (ax 3.57))(HJ (n rlj2) (ax 18.23))(HJ (n rlj3) (ax 16.95))(HJ (n rlj4) (ax -136.04))(HJ (n rlj5) (ax 75.52))(HJ (n rlj6) (ax 10.56))(HJ (n llj1) (ax -2.55))(HJ (n llj2) (ax -12.95))(HJ (n llj3) (ax 16.38))(HJ (n llj4) (ax -100.26))(HJ (n llj5) (ax 34.49))(HJ (n llj6) (ax -14.60)) +{Tue 20:32:14 Step:785} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:787} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:789} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:791} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:14 Step:791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:794} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:14 Step:809} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:14 Step:813} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:15 Step:833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:15 Step:834} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:15 Step:835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:889} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:891} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:894} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:16 Step:895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:897} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:899} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:16 Step:899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:16 Step:900} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:17 Step:915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:917} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:921} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:924} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 395.02))(GS (sl 0) (sr 0) (t 85.88) (pm PlayOn))(foul 7)(foul 7)(GYR (n torso) (rt -19.39 2.79 6.24))(ACC (n torso) (a 2.16 -2.19 9.34))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax 0.00))(HJ (n raj1) (ax -80.46))(HJ (n raj2) (ax -0.88))(HJ (n raj3) (ax 45.78))(HJ (n raj4) (ax 83.38))(HJ (n laj1) (ax -80.49))(HJ (n laj2) (ax 1.19))(HJ (n laj3) (ax -45.86))(HJ (n laj4) (ax -83.40))(HJ (n rlj1) (ax -26.19))(HJ (n rlj2) (ax -31.56))(HJ (n rlj3) (ax 92.57))(HJ (n rlj4) (ax -106.69))(HJ (n rlj5) (ax 50.82))(FRP (n rf) (c 0.04 -0.08 -0.01) (f 28.28 -1.45 13.90))(HJ (n rlj6) (ax 45.01))(HJ (n llj1) (ax -26.70))(HJ (n llj2) (ax 31.65))(HJ (n llj3) (ax 92.57))(HJ (n llj4) (ax -106.69))(HJ (n llj5) (ax 50.82))(FRP (n lf) (c -0.04 -0.08 -0.01) (f -22.47 1.20 17.12))(HJ (n llj6) (ax -44.98)) +{Tue 20:32:17 Step:924} World_Parser.py: Unknown root tag: bytearray(b'foul') at 72, +Msg: (time (now 395.02))(GS (sl 0) (sr 0) (t 85.88) (pm PlayOn))(foul 7)(foul 7)(GYR (n torso) (rt -19.39 2.79 6.24))(ACC (n torso) (a 2.16 -2.19 9.34))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax 0.00))(HJ (n raj1) (ax -80.46))(HJ (n raj2) (ax -0.88))(HJ (n raj3) (ax 45.78))(HJ (n raj4) (ax 83.38))(HJ (n laj1) (ax -80.49))(HJ (n laj2) (ax 1.19))(HJ (n laj3) (ax -45.86))(HJ (n laj4) (ax -83.40))(HJ (n rlj1) (ax -26.19))(HJ (n rlj2) (ax -31.56))(HJ (n rlj3) (ax 92.57))(HJ (n rlj4) (ax -106.69))(HJ (n rlj5) (ax 50.82))(FRP (n rf) (c 0.04 -0.08 -0.01) (f 28.28 -1.45 13.90))(HJ (n rlj6) (ax 45.01))(HJ (n llj1) (ax -26.70))(HJ (n llj2) (ax 31.65))(HJ (n llj3) (ax 92.57))(HJ (n llj4) (ax -106.69))(HJ (n llj5) (ax 50.82))(FRP (n lf) (c -0.04 -0.08 -0.01) (f -22.47 1.20 17.12))(HJ (n llj6) (ax -44.98)) +{Tue 20:32:17 Step:925} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:925} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:928} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:928} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:929} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:932} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:936} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:937} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:939} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:939} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:942} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:943} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:945} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:945} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:947} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:17 Step:947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:950} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:17 Step:951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:17 Step:955} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:18 Step:955} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:958} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:18 Step:959} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:961} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:961} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:964} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:18 Step:965} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:967} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:18 Step:967} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:18 Step:971} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:19 Step:1015} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1016} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1017} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1035} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1035} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1039} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:19 Step:1039} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1040} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 397.34))(GS (sl 0) (sr 0) (t 88.20) (pm PlayOn))(foul 7)(GYR (n torso) (rt 9.39 -24.11 20.11))(ACC (n torso) (a -3.70 -7.40 17.46))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax 0.00))(HJ (n raj1) (ax -79.59))(HJ (n raj2) (ax 6.96))(HJ (n raj3) (ax 39.59))(HJ (n raj4) (ax 75.06))(HJ (n laj1) (ax -79.89))(HJ (n laj2) (ax 4.58))(HJ (n laj3) (ax -39.64))(HJ (n laj4) (ax -75.00))(HJ (n rlj1) (ax -28.13))(HJ (n rlj2) (ax -34.60))(HJ (n rlj3) (ax 94.19))(HJ (n rlj4) (ax -110.70))(HJ (n rlj5) (ax 49.86))(FRP (n rf) (c 0.00 -0.08 -0.01) (f 51.08 14.99 32.99))(HJ (n rlj6) (ax 45.00))(HJ (n llj1) (ax -25.61))(HJ (n llj2) (ax 33.78))(HJ (n llj3) (ax 99.99))(HJ (n llj4) (ax -110.63))(HJ (n llj5) (ax 49.85))(FRP (n lf) (c -0.05 -0.08 -0.01) (f -60.18 -8.69 23.42))(HJ (n llj6) (ax -44.98)) +{Tue 20:32:19 Step:1042} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:19 Step:1043} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1044} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 397.42))(GS (sl 0) (sr 0) (t 88.28) (pm PlayOn))(foul 7)(GYR (n torso) (rt -23.22 2.17 54.89))(ACC (n torso) (a -4.62 -7.07 13.32))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax 0.00))(HJ (n raj1) (ax -91.67))(HJ (n raj2) (ax -6.99))(HJ (n raj3) (ax 51.84))(HJ (n raj4) (ax 75.00))(HJ (n laj1) (ax -91.67))(HJ (n laj2) (ax 4.53))(HJ (n laj3) (ax -51.85))(HJ (n laj4) (ax -75.00))(HJ (n rlj1) (ax -26.86))(HJ (n rlj2) (ax -32.09))(HJ (n rlj3) (ax 91.72))(HJ (n rlj4) (ax -104.74))(HJ (n rlj5) (ax 51.27))(FRP (n rf) (c 0.04 -0.08 -0.01) (f -0.15 10.91 -0.23))(HJ (n rlj6) (ax 44.99))(HJ (n llj1) (ax -14.54))(HJ (n llj2) (ax 30.15))(HJ (n llj3) (ax 99.99))(HJ (n llj4) (ax -102.81))(HJ (n llj5) (ax 51.72))(FRP (n lf) (c -0.04 -0.03 -0.01) (f -6.52 -4.68 1.44))(HJ (n llj6) (ax -44.98)) +{Tue 20:32:19 Step:1045} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1047} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1049} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:19 Step:1049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:19 Step:1053} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:20 Step:1053} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1056} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:20 Step:1057} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1059} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1059} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1061} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1063} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1065} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1075} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1077} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1077} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1080} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:20 Step:1083} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1087} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1089} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1089} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1093} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:20 Step:1093} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1095} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:20 Step:1095} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1098} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:20 Step:1099} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:20 Step:1101} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1101} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1104} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1105} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1107} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1107} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1111} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1111} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1114} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1115} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1117} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1120} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1121} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1123} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1123} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1126} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1127} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1129} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1129} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1131} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1131} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1133} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1135} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1135} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1138} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1139} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1141} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:21 Step:1141} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1145} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:21 Step:1145} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:21 Step:1148} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:22 Step:1149} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1151} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1151} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1154} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:22 Step:1155} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1157} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1179} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:22 Step:1181} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:22 Step:1181} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1203} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1205} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1205} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1208} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:23 Step:1209} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1211} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1211} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1213} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1215} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1215} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1217} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1219} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:23 Step:1219} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:23 Step:1222} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1279} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1281} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1281} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1283} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1283} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1285} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1285} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1287} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:24 Step:1287} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1290} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:24 Step:1291} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:24 Step:1294} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:25 Step:1295} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1298} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:25 Step:1299} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1302} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:25 Step:1311} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1313} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1313} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1315} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1315} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1319} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:25 Step:1319} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1321} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1321} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1323} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1323} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1325} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1325} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1327} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1327} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1329} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1329} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1331} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:25 Step:1331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1332} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1333} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1334} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:25 Step:1335} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:25 Step:1336} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:25 Step:1337} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1341} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1341} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1347} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1349} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:26 Step:1349} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:26 Step:1352} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1403} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1406} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1407} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1409} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:27 Step:1409} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1413} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1413} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1416} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1416} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1417} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1421} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1421} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1425} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1425} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1428} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:27 Step:1429} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:27 Step:1431} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:28 Step:1431} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1434} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1434} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:28 Step:1435} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1438} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1441} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:28 Step:1441} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1443} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1445} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:28 Step:1445} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1449} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1449} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1452} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1453} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1455} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:28 Step:1455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1458} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1459} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1461} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:28 Step:1461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1464} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:28 Step:1465} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1467} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:28 Step:1467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:28 Step:1470} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1518} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:29 Step:1519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:29 Step:1521} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:30 Step:1521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1524} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:30 Step:1524} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:30 Step:1525} World_Parser.py: Unknown root tag: bytearray(b'foul') at 64, +Msg: (time (now 407.03))(GS (sl 0) (sr 0) (t 97.90) (pm PlayOn))(foul 7)(GYR (n torso) (rt 236.08 11.79 -7.38))(ACC (n torso) (a 3.89 -3.92 -3.86))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.24 -36.51 -29.15)) (llowerarm (pol 0.25 40.11 -27.24))) (mypos -10.06 -0.40 0.17) (myorien 121.97) (ballpos -9.00 0.00 0.04))(HJ (n raj1) (ax -15.61))(HJ (n raj2) (ax -20.24))(HJ (n raj3) (ax 8.17))(HJ (n raj4) (ax 40.92))(HJ (n laj1) (ax -14.71))(HJ (n laj2) (ax 26.21))(HJ (n laj3) (ax -8.16))(HJ (n laj4) (ax -40.96))(HJ (n rlj1) (ax -57.48))(HJ (n rlj2) (ax 22.98))(HJ (n rlj3) (ax 26.34))(HJ (n rlj4) (ax -101.83))(HJ (n rlj5) (ax 16.80))(HJ (n rlj6) (ax -5.22))(HJ (n llj1) (ax -57.48))(HJ (n llj2) (ax -22.94))(HJ (n llj3) (ax 26.37))(HJ (n llj4) (ax -101.74))(HJ (n llj5) (ax 16.87))(HJ (n llj6) (ax 5.25)) +{Tue 20:32:30 Step:1555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:30 Step:1558} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:32 Step:1621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1623} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1624} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1629} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1631} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1645} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1647} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1649} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1651} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1653} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 409.59))(GS (sl 0) (sr 0) (t 100.46) (pm PlayOn))(foul 7)(foul 7)(GYR (n torso) (rt -157.39 -12.25 19.74))(ACC (n torso) (a 1.55 -3.57 3.39))(HJ (n hj1) (ax 0.04))(HJ (n hj2) (ax -0.06))(See (P (team Gym) (id 1) (rfoot (pol 0.37 -40.91 -54.60)) (lfoot (pol 0.37 42.00 -53.98))) (mypos -10.24 -0.08 0.31) (myorien -69.49) (ballpos -9.00 0.00 0.04) (L (pol 14.26 35.78 50.61) (pol 11.07 60.01 37.43)) (L (pol 25.22 60.04 38.73) (pol 10.77 -60.08 32.06)))(HJ (n raj1) (ax -73.08))(HJ (n raj2) (ax 7.31))(HJ (n raj3) (ax 39.37))(HJ (n raj4) (ax 83.17))(HJ (n laj1) (ax -73.08))(HJ (n laj2) (ax -7.27))(HJ (n laj3) (ax -39.31))(HJ (n laj4) (ax -83.23))(HJ (n rlj1) (ax -26.42))(HJ (n rlj2) (ax -33.31))(HJ (n rlj3) (ax 100.00))(HJ (n rlj4) (ax -105.68))(HJ (n rlj5) (ax 49.92))(FRP (n rf) (c 0.01 0.08 -0.01) (f 55.87 -10.95 14.75))(HJ (n rlj6) (ax 45.00))(HJ (n llj1) (ax -29.24))(HJ (n llj2) (ax 33.31))(HJ (n llj3) (ax 100.00))(HJ (n llj4) (ax -105.68))(HJ (n llj5) (ax 49.84))(FRP (n lf) (c -0.02 -0.02 -0.02) (f -4.30 -3.29 89.48))(HJ (n llj6) (ax -45.00)) +{Tue 20:32:32 Step:1653} World_Parser.py: Unknown root tag: bytearray(b'foul') at 73, +Msg: (time (now 409.59))(GS (sl 0) (sr 0) (t 100.46) (pm PlayOn))(foul 7)(foul 7)(GYR (n torso) (rt -157.39 -12.25 19.74))(ACC (n torso) (a 1.55 -3.57 3.39))(HJ (n hj1) (ax 0.04))(HJ (n hj2) (ax -0.06))(See (P (team Gym) (id 1) (rfoot (pol 0.37 -40.91 -54.60)) (lfoot (pol 0.37 42.00 -53.98))) (mypos -10.24 -0.08 0.31) (myorien -69.49) (ballpos -9.00 0.00 0.04) (L (pol 14.26 35.78 50.61) (pol 11.07 60.01 37.43)) (L (pol 25.22 60.04 38.73) (pol 10.77 -60.08 32.06)))(HJ (n raj1) (ax -73.08))(HJ (n raj2) (ax 7.31))(HJ (n raj3) (ax 39.37))(HJ (n raj4) (ax 83.17))(HJ (n laj1) (ax -73.08))(HJ (n laj2) (ax -7.27))(HJ (n laj3) (ax -39.31))(HJ (n laj4) (ax -83.23))(HJ (n rlj1) (ax -26.42))(HJ (n rlj2) (ax -33.31))(HJ (n rlj3) (ax 100.00))(HJ (n rlj4) (ax -105.68))(HJ (n rlj5) (ax 49.92))(FRP (n rf) (c 0.01 0.08 -0.01) (f 55.87 -10.95 14.75))(HJ (n rlj6) (ax 45.00))(HJ (n llj1) (ax -29.24))(HJ (n llj2) (ax 33.31))(HJ (n llj3) (ax 100.00))(HJ (n llj4) (ax -105.68))(HJ (n llj5) (ax 49.84))(FRP (n lf) (c -0.02 -0.02 -0.02) (f -4.30 -3.29 89.48))(HJ (n llj6) (ax -45.00)) +{Tue 20:32:32 Step:1653} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1655} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1659} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:32 Step:1663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1664} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:32 Step:1665} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:32 Step:1668} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1671} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1676} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1676} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:33 Step:1677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1681} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1683} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1689} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1689} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1690} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:33 Step:1691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1693} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1694} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 410.41))(GS (sl 0) (sr 0) (t 101.28) (pm PlayOn))(foul 7)(GYR (n torso) (rt -238.54 -90.74 -9.13))(ACC (n torso) (a -0.68 -6.14 8.20))(HJ (n hj1) (ax 114.94))(HJ (n hj2) (ax -48.06))(HJ (n raj1) (ax -87.63))(HJ (n raj2) (ax 0.45))(HJ (n raj3) (ax 48.49))(HJ (n raj4) (ax 83.16))(HJ (n laj1) (ax -87.63))(HJ (n laj2) (ax -0.41))(HJ (n laj3) (ax -48.41))(HJ (n laj4) (ax -83.29))(HJ (n rlj1) (ax -4.84))(HJ (n rlj2) (ax 31.24))(HJ (n rlj3) (ax 42.80))(HJ (n rlj4) (ax -118.49))(HJ (n rlj5) (ax 74.46))(HJ (n rlj6) (ax 39.30))(HJ (n llj1) (ax -9.88))(HJ (n llj2) (ax -12.73))(HJ (n llj3) (ax 34.86))(HJ (n llj4) (ax -99.46))(HJ (n llj5) (ax 64.08))(FRP (n lf) (c 0.01 0.08 -0.01) (f 1.48 -4.81 7.49))(HJ (n llj6) (ax 21.89)) +{Tue 20:32:33 Step:1696} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:33 Step:1697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1698} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:33 Step:1701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1705} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1707} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1709} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:33 Step:1709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:33 Step:1712} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:34 Step:1715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:34 Step:1716} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:35 Step:1793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1816} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1819} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1821} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1821} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1825} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1825} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1827} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1830} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1830} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:36 Step:1831} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1833} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1836} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1836} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:36 Step:1837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1839} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1842} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:36 Step:1845} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:36 Step:1849} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:36 Step:1849} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:38 Step:1905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1907} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:38 Step:1907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1911} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1913} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:38 Step:1913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1915} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 414.83))(GS (sl 0) (sr 0) (t 105.69) (pm PlayOn))(foul 7)(GYR (n torso) (rt 1.07 -17.53 114.52))(ACC (n torso) (a 6.83 -5.95 3.40))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.03))(See (P (team Gym) (id 1) (llowerarm (pol 0.21 34.40 -48.36)) (rfoot (pol 0.36 -55.20 -58.76)) (lfoot (pol 0.36 51.40 -59.63))) (F2L (pol 10.55 11.54 42.81)) (mypos -10.44 -0.47 0.30) (myorien -122.22) (ballpos -9.00 0.00 0.04) (L (pol 10.58 11.44 42.71) (pol 4.58 -60.03 23.50)) (L (pol 10.09 59.85 22.54) (pol 10.56 11.77 42.49)) (L (pol 2.78 -59.91 20.74) (pol 3.76 -17.59 39.38)) (L (pol 3.77 -17.58 39.30) (pol 5.22 -34.44 36.91)))(HJ (n raj1) (ax -77.20))(HJ (n raj2) (ax 1.10))(HJ (n raj3) (ax 42.83))(HJ (n raj4) (ax 93.08))(HJ (n laj1) (ax -53.28))(HJ (n laj2) (ax 8.79))(HJ (n laj3) (ax -43.19))(HJ (n laj4) (ax -90.28))(HJ (n rlj1) (ax -37.90))(HJ (n rlj2) (ax -39.28))(HJ (n rlj3) (ax 99.54))(HJ (n rlj4) (ax -129.75))(HJ (n rlj5) (ax 50.33))(HJ (n rlj6) (ax 44.78))(HJ (n llj1) (ax -36.64))(HJ (n llj2) (ax 33.97))(HJ (n llj3) (ax 101.53))(HJ (n llj4) (ax -129.71))(HJ (n llj5) (ax 50.24))(FRP (n lf) (c 0.04 0.00 -0.01) (f -11.67 14.95 23.17))(HJ (n llj6) (ax -44.79)) +{Tue 20:32:38 Step:1917} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1920} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1923} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:38 Step:1923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1926} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1927} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1929} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:38 Step:1929} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1936} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1936} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1937} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1940} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1944} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1945} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1948} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:38 Step:1949} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:38 Step:1952} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:1977} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1980} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:1981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1984} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:1985} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1988} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:1989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1992} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:39 Step:1993} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:1995} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:39 Step:1995} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:39 Step:2001} Server_Comm.py: The agent lost 5 consecutive packets! Is syncmode disabled? +{Tue 20:32:40 Step:2031} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2036} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:40 Step:2037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:40 Step:2039} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:40 Step:2039} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2057} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2057} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2061} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 417.75))(GS (sl 0) (sr 0) (t 108.61) (pm PlayOn))(foul 7)(GYR (n torso) (rt -50.64 -46.01 -1.58))(ACC (n torso) (a 3.68 -8.63 18.63))(HJ (n hj1) (ax -0.03))(HJ (n hj2) (ax 0.01))(See (P (team Gym) (id 1) (rfoot (pol 0.37 -42.24 -56.54)) (lfoot (pol 0.37 42.80 -56.15))) (G2L (pol 4.43 -37.92 51.38)) (F2L (pol 10.46 47.68 38.04)) (mypos -10.63 -0.52 0.32) (myorien -151.12) (ballpos -9.00 0.00 0.04) (L (pol 10.44 47.91 38.07) (pol 4.72 -60.05 25.88)) (L (pol 9.69 59.94 29.84) (pol 10.45 48.02 38.26)) (L (pol 2.84 -59.67 22.34) (pol 3.59 20.33 44.05)) (L (pol 3.59 20.60 44.09) (pol 5.04 -0.15 47.49)))(HJ (n raj1) (ax -82.52))(HJ (n raj2) (ax -2.00))(HJ (n raj3) (ax 39.61))(HJ (n raj4) (ax 80.62))(HJ (n laj1) (ax -72.20))(HJ (n laj2) (ax -6.57))(HJ (n laj3) (ax -39.75))(HJ (n laj4) (ax -81.00))(HJ (n rlj1) (ax -26.25))(HJ (n rlj2) (ax -33.60))(HJ (n rlj3) (ax 100.02))(HJ (n rlj4) (ax -110.69))(HJ (n rlj5) (ax 49.86))(FRP (n rf) (c 0.04 -0.08 -0.01) (f 38.48 -26.35 29.21))(HJ (n rlj6) (ax 44.98))(HJ (n llj1) (ax -26.76))(HJ (n llj2) (ax 35.21))(HJ (n llj3) (ax 100.01))(HJ (n llj4) (ax -110.72))(HJ (n llj5) (ax 49.84))(FRP (n lf) (c -0.01 0.07 -0.01) (f -64.14 10.62 16.30))(HJ (n llj6) (ax -44.93)) +{Tue 20:32:41 Step:2061} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:2061} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2064} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:2065} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2068} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:2069} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2071} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2071} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2073} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2073} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2076} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:2079} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2081} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2081} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2084} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:2085} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2087} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2087} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2089} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2089} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2093} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:41 Step:2093} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2095} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2095} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2097} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:41 Step:2097} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:41 Step:2099} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2099} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2101} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2101} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2103} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2103} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2105} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2105} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2108} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:42 Step:2123} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2125} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2125} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2127} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2127} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2129} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:42 Step:2129} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:42 Step:2132} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:43 Step:2185} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2188} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:43 Step:2189} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2192} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:43 Step:2193} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2195} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:43 Step:2195} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:43 Step:2199} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2199} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2202} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2203} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2206} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2206} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:44 Step:2209} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2211} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2211} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2214} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2214} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:44 Step:2215} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 420.83))(GS (sl 0) (sr 0) (t 111.69) (pm PlayOn))(foul 7)(GYR (n torso) (rt 144.00 220.28 118.60))(ACC (n torso) (a -0.70 2.11 1.71))(HJ (n hj1) (ax 83.93))(HJ (n hj2) (ax -35.33))(See (P (team Gym) (id 1) (llowerarm (pol 0.25 -24.06 -19.14)) (rfoot (pol 0.43 -3.05 -51.02)) (lfoot (pol 0.45 -25.46 -55.05))) (G2R (pol 25.83 7.03 17.74)) (G1R (pol 25.93 11.53 15.39)) (F1R (pol 28.07 26.88 4.45)) (F2R (pol 27.37 -11.83 24.40)) (B (pol 2.09 24.20 -6.70)) (mypos -10.83 -0.92 0.47) (myorien 1.79) (ballpos -9.00 0.00 0.04) (L (pol 14.12 -34.48 29.40) (pol 15.40 44.84 -8.33)) (L (pol 27.41 -11.81 24.61) (pol 28.04 26.82 4.60)) (L (pol 28.05 27.09 4.50) (pol 12.32 60.24 -17.69)) (L (pol 27.39 -11.97 24.39) (pol 10.28 -60.15 30.10)) (L (pol 24.38 15.17 11.44) (pol 24.09 2.16 18.48)) (L (pol 24.39 14.87 11.56) (pol 26.10 14.27 12.12)) (L (pol 24.11 2.02 18.33) (pol 25.93 2.51 18.16)) (L (pol 12.88 9.57 13.40) (pol 12.64 14.85 10.35)) (L (pol 12.62 14.47 10.54) (pol 11.80 18.52 8.27)) (L (pol 11.81 18.48 8.19) (pol 10.61 19.67 6.96)) (L (pol 10.62 19.82 7.10) (pol 9.46 16.87 8.38)) (L (pol 9.46 16.91 8.36) (pol 8.90 10.81 11.62)) (L (pol 8.90 10.90 11.75) (pol 9.23 4.25 15.03)) (L (pol 9.23 4.34 15.53) (pol 10.28 0.71 17.34)) (L (pol 10.28 1.09 17.38) (pol 11.49 1.38 17.41)) (L (pol 11.50 1.48 17.42) (pol 12.45 4.89 15.93)) (L (pol 12.48 5.13 15.73) (pol 12.87 10.13 13.07)))(HJ (n raj1) (ax -67.73))(HJ (n raj2) (ax -22.42))(HJ (n raj3) (ax 62.17))(HJ (n raj4) (ax 83.43))(HJ (n laj1) (ax -67.73))(HJ (n laj2) (ax 21.23))(HJ (n laj3) (ax -62.12))(HJ (n laj4) (ax -83.42))(HJ (n rlj1) (ax -6.58))(HJ (n rlj2) (ax 29.78))(HJ (n rlj3) (ax 36.53))(HJ (n rlj4) (ax -118.85))(HJ (n rlj5) (ax 74.31))(HJ (n rlj6) (ax 3.23))(HJ (n llj1) (ax -6.58))(HJ (n llj2) (ax -29.63))(HJ (n llj3) (ax 50.90))(HJ (n llj4) (ax -89.55))(HJ (n llj5) (ax 74.18))(FRP (n lf) (c -0.04 -0.08 -0.01) (f 2.25 2.93 15.57))(HJ (n llj6) (ax 4.23)) +{Tue 20:32:44 Step:2215} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2218} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2218} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2219} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2222} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2223} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2225} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2225} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2228} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2229} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2231} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2231} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2235} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2235} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2237} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2237} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2240} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:44 Step:2240} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2241} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2243} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2245} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:44 Step:2245} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:44 Step:2247} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2249} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2249} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2253} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:45 Step:2257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2263} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2263} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2265} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:45 Step:2265} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:45 Step:2268} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:46 Step:2335} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2339} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:46 Step:2339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:46 Step:2342} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2343} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2346} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2353} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:47 Step:2355} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2355} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2357} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2357} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2360} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2361} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2364} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2365} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2367} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2367} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2370} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2370} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:47 Step:2371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2373} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2373} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2376} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:47 Step:2377} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2379} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:47 Step:2379} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:47 Step:2387} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:47 Step:2389} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2395} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2397} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:48 Step:2397} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2400} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:48 Step:2401} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:48 Step:2403} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2447} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2449} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2451} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2451} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2453} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2453} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2456} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:49 Step:2456} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:49 Step:2457} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2459} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2459} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2461} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2466} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:49 Step:2467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2469} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2473} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:49 Step:2473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2477} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2479} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:49 Step:2479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2482} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:49 Step:2483} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2486} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:49 Step:2487} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:49 Step:2489} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2490} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 426.32))(GS (sl 0) (sr 0) (t 117.19) (pm PlayOn))(foul 7)(GYR (n torso) (rt -284.94 -55.63 -134.98))(ACC (n torso) (a -4.45 1.27 -11.20))(HJ (n hj1) (ax 31.09))(HJ (n hj2) (ax -35.21))(HJ (n raj1) (ax -98.28))(HJ (n raj2) (ax 0.98))(HJ (n raj3) (ax 80.17))(HJ (n raj4) (ax 0.30))(HJ (n laj1) (ax -98.40))(HJ (n laj2) (ax 5.49))(HJ (n laj3) (ax -80.23))(HJ (n laj4) (ax -0.37))(HJ (n rlj1) (ax -8.46))(HJ (n rlj2) (ax -44.21))(HJ (n rlj3) (ax 40.29))(HJ (n rlj4) (ax -130.01))(HJ (n rlj5) (ax 43.10))(HJ (n rlj6) (ax -23.78))(HJ (n llj1) (ax -21.20))(HJ (n llj2) (ax -7.85))(HJ (n llj3) (ax 38.34))(HJ (n llj4) (ax -76.14))(HJ (n llj5) (ax 59.88))(HJ (n llj6) (ax 25.10)) +{Tue 20:32:50 Step:2491} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2493} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2495} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2496} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:50 Step:2497} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2499} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2519} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2523} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2526} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:50 Step:2527} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2529} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2532} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:50 Step:2533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2535} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:50 Step:2535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:50 Step:2537} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:51 Step:2543} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:51 Step:2545} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2591} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2595} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2597} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2599} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:52 Step:2599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2617} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2622} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2630} Server_Comm.py: The agent lost 6 consecutive packets! Is syncmode disabled? +{Tue 20:32:52 Step:2631} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:52 Step:2635} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2635} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2639} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2639} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2642} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2643} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2646} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2650} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2655} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:53 Step:2655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2658} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:53 Step:2661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2663} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:53 Step:2663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:53 Step:2666} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:55 Step:2759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2762} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:55 Step:2763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2766} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:55 Step:2767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:55 Step:2769} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:56 Step:2783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2787} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:56 Step:2787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2791} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 432.34))(GS (sl 0) (sr 0) (t 123.21) (pm PlayOn))(foul 7)(GYR (n torso) (rt -23.25 3.42 -12.43))(ACC (n torso) (a -0.28 -2.81 8.70))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax 0.00))(See (P (team Gym) (id 1) (rfoot (pol 0.39 -45.11 -57.09)) (lfoot (pol 0.39 42.67 -59.00))) (G2R (pol 25.48 11.79 42.04)) (G1R (pol 25.67 18.20 41.17)) (F1R (pol 28.15 39.31 33.30)) (F2R (pol 26.70 -14.15 40.04)) (mypos -10.46 -2.04 0.36) (myorien -6.03) (ballpos -9.00 0.00 0.04) (L (pol 13.14 -37.88 33.62) (pol 15.33 59.89 21.91)) (L (pol 26.68 -14.17 40.34) (pol 28.16 39.31 33.59)) (L (pol 28.16 39.15 33.60) (pol 16.45 60.22 21.84)) (L (pol 26.66 -14.39 40.31) (pol 9.18 -60.16 21.83)) (L (pol 24.19 24.09 38.09) (pol 23.70 5.56 40.59)) (L (pol 24.18 23.99 38.12) (pol 25.95 22.61 38.38)) (L (pol 23.65 5.60 40.63) (pol 25.52 5.55 40.74)) (L (pol 12.64 20.47 38.08) (pol 12.48 27.22 36.54)) (L (pol 12.52 26.91 36.64) (pol 11.78 32.33 34.96)) (L (pol 11.77 32.32 34.99) (pol 10.60 34.99 33.86)) (L (pol 10.61 34.75 33.96) (pol 9.42 32.53 34.29)) (L (pol 9.42 32.88 34.32) (pol 8.71 25.16 36.53)) (L (pol 8.71 25.37 36.16) (pol 8.88 15.69 38.06)) (L (pol 8.88 15.11 38.28) (pol 9.84 9.48 39.10)) (L (pol 9.86 9.60 39.12) (pol 11.10 9.70 39.38)) (L (pol 11.08 9.36 39.37) (pol 12.11 13.75 39.24)) (L (pol 12.11 13.76 39.05) (pol 12.63 20.17 38.23)))(HJ (n raj1) (ax -77.17))(HJ (n raj2) (ax 1.02))(HJ (n raj3) (ax 42.98))(HJ (n raj4) (ax 75.91))(HJ (n laj1) (ax -77.25))(HJ (n laj2) (ax 4.23))(HJ (n laj3) (ax -42.77))(HJ (n laj4) (ax -75.14))(HJ (n rlj1) (ax -28.08))(HJ (n rlj2) (ax -32.42))(HJ (n rlj3) (ax 93.47))(HJ (n rlj4) (ax -108.66))(HJ (n rlj5) (ax 50.38))(FRP (n rf) (c 0.04 -0.08 -0.01) (f 23.01 8.18 22.32))(HJ (n rlj6) (ax 44.99))(HJ (n llj1) (ax -22.80))(HJ (n llj2) (ax 32.49))(HJ (n llj3) (ax 93.53))(HJ (n llj4) (ax -108.72))(HJ (n llj5) (ax 45.84))(FRP (n lf) (c -0.04 -0.08 -0.01) (f -22.23 4.89 24.22))(HJ (n llj6) (ax -45.00)) +{Tue 20:32:56 Step:2791} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:56 Step:2791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2794} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:56 Step:2795} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2798} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:56 Step:2798} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:56 Step:2799} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2802} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:56 Step:2805} Server_Comm.py: Received a new packet while thinking! +{Tue 20:32:56 Step:2807} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2813} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:56 Step:2813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2816} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:56 Step:2817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:56 Step:2820} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2821} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2823} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2823} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2826} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2841} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2845} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2847} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:57 Step:2847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2850} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2854} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2855} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2857} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2860} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:57 Step:2861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:57 Step:2863} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2866} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:58 Step:2867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2869} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2871} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2874} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:58 Step:2875} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2878} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:58 Step:2879} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2881} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:58 Step:2881} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:58 Step:2885} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2927} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2927} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2930} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2931} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2933} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:32:59 Step:2933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2936} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:32:59 Step:2947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2949} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:32:59 Step:2951} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2954} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:33:00 Step:2957} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2959} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2959} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2962} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:33:00 Step:2963} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2965} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2969} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2971} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2971} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2974} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 436.00))(GS (sl 0) (sr 0) (t 126.87) (pm PlayOn))(foul 7)(GYR (n torso) (rt 110.05 289.99 24.34))(ACC (n torso) (a -5.72 -0.01 3.79))(HJ (n hj1) (ax 49.08))(HJ (n hj2) (ax -49.08))(HJ (n raj1) (ax -78.47))(HJ (n raj2) (ax 3.22))(HJ (n raj3) (ax 108.09))(HJ (n raj4) (ax 69.61))(HJ (n laj1) (ax -62.11))(HJ (n laj2) (ax 6.87))(HJ (n laj3) (ax -106.17))(HJ (n laj4) (ax -69.76))(HJ (n rlj1) (ax -5.13))(HJ (n rlj2) (ax 22.31))(HJ (n rlj3) (ax 34.89))(HJ (n rlj4) (ax -113.70))(HJ (n rlj5) (ax 74.11))(HJ (n rlj6) (ax 9.34))(HJ (n llj1) (ax -22.25))(HJ (n llj2) (ax -22.56))(HJ (n llj3) (ax 5.84))(HJ (n llj4) (ax -88.41))(HJ (n llj5) (ax 48.42))(FRP (n lf) (c 0.04 0.08 -0.01) (f -6.18 -14.71 41.59))(HJ (n llj6) (ax 7.71)) +{Tue 20:33:00 Step:2974} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:33:00 Step:2975} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2977} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2977} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2979} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2979} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2982} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:33:00 Step:2983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2985} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2985} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2987} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:33:00 Step:2987} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:33:00 Step:2990} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? diff --git a/logs/2025-11-04_20.34.32__RFNPED/Gym_1.log b/logs/2025-11-04_20.34.32__RFNPED/Gym_1.log new file mode 100644 index 0000000..9449187 --- /dev/null +++ b/logs/2025-11-04_20.34.32__RFNPED/Gym_1.log @@ -0,0 +1,19 @@ +{Tue 20:34:32 Step:1} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:34:32 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 86, +Msg: (time (now 526.47))(GS (unum 1) (team left) (sl 0) (sr 0) (t 217.91) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:32 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 94, +Msg: (time (now 526.47))(GS (unum 1) (team left) (sl 0) (sr 0) (t 217.91) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:32 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 102, +Msg: (time (now 526.47))(GS (unum 1) (team left) (sl 0) (sr 0) (t 217.91) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:32 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 110, +Msg: (time (now 526.47))(GS (unum 1) (team left) (sl 0) (sr 0) (t 217.91) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:32 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 118, +Msg: (time (now 526.47))(GS (unum 1) (team left) (sl 0) (sr 0) (t 217.91) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:32 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 126, +Msg: (time (now 526.47))(GS (unum 1) (team left) (sl 0) (sr 0) (t 217.91) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:32 Step:5} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:34:32 Step:7} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:34:33 Step:7} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:34:33 Step:9} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:34:33 Step:9} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:34:33 Step:12} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? diff --git a/logs/2025-11-04_20.34.34__SJDOLF/Gym_1.log b/logs/2025-11-04_20.34.34__SJDOLF/Gym_1.log new file mode 100644 index 0000000..11939fe --- /dev/null +++ b/logs/2025-11-04_20.34.34__SJDOLF/Gym_1.log @@ -0,0 +1,19 @@ +{Tue 20:34:34 Step:1} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:34:34 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 86, +Msg: (time (now 527.71))(GS (unum 1) (team left) (sl 0) (sr 0) (t 216.87) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:34 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 94, +Msg: (time (now 527.71))(GS (unum 1) (team left) (sl 0) (sr 0) (t 216.87) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:34 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 102, +Msg: (time (now 527.71))(GS (unum 1) (team left) (sl 0) (sr 0) (t 216.87) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:34 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 110, +Msg: (time (now 527.71))(GS (unum 1) (team left) (sl 0) (sr 0) (t 216.87) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:34 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 118, +Msg: (time (now 527.71))(GS (unum 1) (team left) (sl 0) (sr 0) (t 216.87) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:34 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 126, +Msg: (time (now 527.71))(GS (unum 1) (team left) (sl 0) (sr 0) (t 216.87) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:34 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 134, +Msg: (time (now 527.71))(GS (unum 1) (team left) (sl 0) (sr 0) (t 216.87) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:34 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 142, +Msg: (time (now 527.71))(GS (unum 1) (team left) (sl 0) (sr 0) (t 216.87) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:34 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 150, +Msg: (time (now 527.71))(GS (unum 1) (team left) (sl 0) (sr 0) (t 216.87) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) diff --git a/logs/2025-11-04_20.34.35__PAEJLK/Gym_1.log b/logs/2025-11-04_20.34.35__PAEJLK/Gym_1.log new file mode 100644 index 0000000..de59852 --- /dev/null +++ b/logs/2025-11-04_20.34.35__PAEJLK/Gym_1.log @@ -0,0 +1,21 @@ +{Tue 20:34:35 Step:1} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:34:35 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 86, +Msg: (time (now 527.39))(GS (unum 1) (team left) (sl 0) (sr 0) (t 216.95) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a 0.00 0.00 9.81))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.68))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c -0.00 -0.00 -0.02) (f 0.00 -0.04 69.68))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:35 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 94, +Msg: (time (now 527.39))(GS (unum 1) (team left) (sl 0) (sr 0) (t 216.95) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a 0.00 0.00 9.81))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.68))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c -0.00 -0.00 -0.02) (f 0.00 -0.04 69.68))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:35 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 102, +Msg: (time (now 527.39))(GS (unum 1) (team left) (sl 0) (sr 0) (t 216.95) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a 0.00 0.00 9.81))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.68))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c -0.00 -0.00 -0.02) (f 0.00 -0.04 69.68))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:35 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 110, +Msg: (time (now 527.39))(GS (unum 1) (team left) (sl 0) (sr 0) (t 216.95) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a 0.00 0.00 9.81))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.68))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c -0.00 -0.00 -0.02) (f 0.00 -0.04 69.68))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:35 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 118, +Msg: (time (now 527.39))(GS (unum 1) (team left) (sl 0) (sr 0) (t 216.95) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a 0.00 0.00 9.81))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.68))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c -0.00 -0.00 -0.02) (f 0.00 -0.04 69.68))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:35 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 126, +Msg: (time (now 527.39))(GS (unum 1) (team left) (sl 0) (sr 0) (t 216.95) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a 0.00 0.00 9.81))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.68))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c -0.00 -0.00 -0.02) (f 0.00 -0.04 69.68))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:35 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 134, +Msg: (time (now 527.39))(GS (unum 1) (team left) (sl 0) (sr 0) (t 216.95) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a 0.00 0.00 9.81))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.68))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c -0.00 -0.00 -0.02) (f 0.00 -0.04 69.68))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:35 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 142, +Msg: (time (now 527.39))(GS (unum 1) (team left) (sl 0) (sr 0) (t 216.95) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a 0.00 0.00 9.81))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.68))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c -0.00 -0.00 -0.02) (f 0.00 -0.04 69.68))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:35 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 150, +Msg: (time (now 527.39))(GS (unum 1) (team left) (sl 0) (sr 0) (t 216.95) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a 0.00 0.00 9.81))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.68))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c -0.00 -0.00 -0.02) (f 0.00 -0.04 69.68))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:35 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 158, +Msg: (time (now 527.39))(GS (unum 1) (team left) (sl 0) (sr 0) (t 216.95) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a 0.00 0.00 9.81))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.68))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c -0.00 -0.00 -0.02) (f 0.00 -0.04 69.68))(HJ (n llj6) (ax -0.00)) diff --git a/logs/2025-11-04_20.34.36__AEOPHS/Gym_1.log b/logs/2025-11-04_20.34.36__AEOPHS/Gym_1.log new file mode 100644 index 0000000..e08b383 --- /dev/null +++ b/logs/2025-11-04_20.34.36__AEOPHS/Gym_1.log @@ -0,0 +1,37 @@ +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 86, +Msg: (time (now 531.68))(GS (unum 1) (team left) (sl 0) (sr 0) (t 222.59) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.47 -20.26)) (llowerarm (pol 0.21 28.99 -20.14))) (G2R (pol 30.26 -14.99 0.48)) (G1R (pol 29.78 -11.05 0.48)) (F1R (pol 29.36 6.42 -1.13)) (F2R (pol 33.70 -30.09 -0.90)) (B (pol 8.58 -52.63 -3.44)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.03 -49.97 -1.56) (pol 14.55 12.68 -2.38)) (L (pol 33.72 -29.56 -0.99) (pol 29.39 6.46 -1.02)) (L (pol 29.38 6.33 -1.16) (pol 3.74 59.93 -8.60)) (L (pol 33.71 -29.80 -1.03) (pol 19.42 -60.16 -1.45)) (L (pol 27.66 -7.85 -1.16) (pol 29.11 -19.73 -0.92)) (L (pol 27.68 -7.89 -1.21) (pol 29.42 -7.46 -1.22)) (L (pol 29.07 -19.66 -0.88) (pol 30.85 -18.38 -1.00)) (L (pol 17.52 -22.82 -1.88) (pol 16.78 -19.56 -2.20)) (L (pol 16.78 -19.56 -1.91) (pol 15.61 -18.26 -2.27)) (L (pol 15.61 -18.52 -2.02) (pol 14.46 -19.77 -2.23)) (L (pol 14.44 -19.85 -2.27) (pol 13.81 -23.99 -2.45)) (L (pol 13.77 -23.94 -2.29) (pol 13.99 -29.13 -2.64)) (L (pol 13.95 -29.26 -2.45) (pol 14.91 -32.18 -2.10)) (L (pol 14.87 -32.43 -2.29) (pol 16.17 -32.58 -2.15)) (L (pol 16.14 -32.92 -2.02) (pol 17.19 -30.43 -1.99)) (L (pol 17.21 -30.24 -1.95) (pol 17.74 -26.77 -1.95)) (L (pol 17.75 -26.84 -1.95) (pol 17.59 -22.79 -1.70)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 94, +Msg: (time (now 531.68))(GS (unum 1) (team left) (sl 0) (sr 0) (t 222.59) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.47 -20.26)) (llowerarm (pol 0.21 28.99 -20.14))) (G2R (pol 30.26 -14.99 0.48)) (G1R (pol 29.78 -11.05 0.48)) (F1R (pol 29.36 6.42 -1.13)) (F2R (pol 33.70 -30.09 -0.90)) (B (pol 8.58 -52.63 -3.44)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.03 -49.97 -1.56) (pol 14.55 12.68 -2.38)) (L (pol 33.72 -29.56 -0.99) (pol 29.39 6.46 -1.02)) (L (pol 29.38 6.33 -1.16) (pol 3.74 59.93 -8.60)) (L (pol 33.71 -29.80 -1.03) (pol 19.42 -60.16 -1.45)) (L (pol 27.66 -7.85 -1.16) (pol 29.11 -19.73 -0.92)) (L (pol 27.68 -7.89 -1.21) (pol 29.42 -7.46 -1.22)) (L (pol 29.07 -19.66 -0.88) (pol 30.85 -18.38 -1.00)) (L (pol 17.52 -22.82 -1.88) (pol 16.78 -19.56 -2.20)) (L (pol 16.78 -19.56 -1.91) (pol 15.61 -18.26 -2.27)) (L (pol 15.61 -18.52 -2.02) (pol 14.46 -19.77 -2.23)) (L (pol 14.44 -19.85 -2.27) (pol 13.81 -23.99 -2.45)) (L (pol 13.77 -23.94 -2.29) (pol 13.99 -29.13 -2.64)) (L (pol 13.95 -29.26 -2.45) (pol 14.91 -32.18 -2.10)) (L (pol 14.87 -32.43 -2.29) (pol 16.17 -32.58 -2.15)) (L (pol 16.14 -32.92 -2.02) (pol 17.19 -30.43 -1.99)) (L (pol 17.21 -30.24 -1.95) (pol 17.74 -26.77 -1.95)) (L (pol 17.75 -26.84 -1.95) (pol 17.59 -22.79 -1.70)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 102, +Msg: (time (now 531.68))(GS (unum 1) (team left) (sl 0) (sr 0) (t 222.59) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.47 -20.26)) (llowerarm (pol 0.21 28.99 -20.14))) (G2R (pol 30.26 -14.99 0.48)) (G1R (pol 29.78 -11.05 0.48)) (F1R (pol 29.36 6.42 -1.13)) (F2R (pol 33.70 -30.09 -0.90)) (B (pol 8.58 -52.63 -3.44)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.03 -49.97 -1.56) (pol 14.55 12.68 -2.38)) (L (pol 33.72 -29.56 -0.99) (pol 29.39 6.46 -1.02)) (L (pol 29.38 6.33 -1.16) (pol 3.74 59.93 -8.60)) (L (pol 33.71 -29.80 -1.03) (pol 19.42 -60.16 -1.45)) (L (pol 27.66 -7.85 -1.16) (pol 29.11 -19.73 -0.92)) (L (pol 27.68 -7.89 -1.21) (pol 29.42 -7.46 -1.22)) (L (pol 29.07 -19.66 -0.88) (pol 30.85 -18.38 -1.00)) (L (pol 17.52 -22.82 -1.88) (pol 16.78 -19.56 -2.20)) (L (pol 16.78 -19.56 -1.91) (pol 15.61 -18.26 -2.27)) (L (pol 15.61 -18.52 -2.02) (pol 14.46 -19.77 -2.23)) (L (pol 14.44 -19.85 -2.27) (pol 13.81 -23.99 -2.45)) (L (pol 13.77 -23.94 -2.29) (pol 13.99 -29.13 -2.64)) (L (pol 13.95 -29.26 -2.45) (pol 14.91 -32.18 -2.10)) (L (pol 14.87 -32.43 -2.29) (pol 16.17 -32.58 -2.15)) (L (pol 16.14 -32.92 -2.02) (pol 17.19 -30.43 -1.99)) (L (pol 17.21 -30.24 -1.95) (pol 17.74 -26.77 -1.95)) (L (pol 17.75 -26.84 -1.95) (pol 17.59 -22.79 -1.70)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 110, +Msg: (time (now 531.68))(GS (unum 1) (team left) (sl 0) (sr 0) (t 222.59) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.47 -20.26)) (llowerarm (pol 0.21 28.99 -20.14))) (G2R (pol 30.26 -14.99 0.48)) (G1R (pol 29.78 -11.05 0.48)) (F1R (pol 29.36 6.42 -1.13)) (F2R (pol 33.70 -30.09 -0.90)) (B (pol 8.58 -52.63 -3.44)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.03 -49.97 -1.56) (pol 14.55 12.68 -2.38)) (L (pol 33.72 -29.56 -0.99) (pol 29.39 6.46 -1.02)) (L (pol 29.38 6.33 -1.16) (pol 3.74 59.93 -8.60)) (L (pol 33.71 -29.80 -1.03) (pol 19.42 -60.16 -1.45)) (L (pol 27.66 -7.85 -1.16) (pol 29.11 -19.73 -0.92)) (L (pol 27.68 -7.89 -1.21) (pol 29.42 -7.46 -1.22)) (L (pol 29.07 -19.66 -0.88) (pol 30.85 -18.38 -1.00)) (L (pol 17.52 -22.82 -1.88) (pol 16.78 -19.56 -2.20)) (L (pol 16.78 -19.56 -1.91) (pol 15.61 -18.26 -2.27)) (L (pol 15.61 -18.52 -2.02) (pol 14.46 -19.77 -2.23)) (L (pol 14.44 -19.85 -2.27) (pol 13.81 -23.99 -2.45)) (L (pol 13.77 -23.94 -2.29) (pol 13.99 -29.13 -2.64)) (L (pol 13.95 -29.26 -2.45) (pol 14.91 -32.18 -2.10)) (L (pol 14.87 -32.43 -2.29) (pol 16.17 -32.58 -2.15)) (L (pol 16.14 -32.92 -2.02) (pol 17.19 -30.43 -1.99)) (L (pol 17.21 -30.24 -1.95) (pol 17.74 -26.77 -1.95)) (L (pol 17.75 -26.84 -1.95) (pol 17.59 -22.79 -1.70)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 118, +Msg: (time (now 531.68))(GS (unum 1) (team left) (sl 0) (sr 0) (t 222.59) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.47 -20.26)) (llowerarm (pol 0.21 28.99 -20.14))) (G2R (pol 30.26 -14.99 0.48)) (G1R (pol 29.78 -11.05 0.48)) (F1R (pol 29.36 6.42 -1.13)) (F2R (pol 33.70 -30.09 -0.90)) (B (pol 8.58 -52.63 -3.44)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.03 -49.97 -1.56) (pol 14.55 12.68 -2.38)) (L (pol 33.72 -29.56 -0.99) (pol 29.39 6.46 -1.02)) (L (pol 29.38 6.33 -1.16) (pol 3.74 59.93 -8.60)) (L (pol 33.71 -29.80 -1.03) (pol 19.42 -60.16 -1.45)) (L (pol 27.66 -7.85 -1.16) (pol 29.11 -19.73 -0.92)) (L (pol 27.68 -7.89 -1.21) (pol 29.42 -7.46 -1.22)) (L (pol 29.07 -19.66 -0.88) (pol 30.85 -18.38 -1.00)) (L (pol 17.52 -22.82 -1.88) (pol 16.78 -19.56 -2.20)) (L (pol 16.78 -19.56 -1.91) (pol 15.61 -18.26 -2.27)) (L (pol 15.61 -18.52 -2.02) (pol 14.46 -19.77 -2.23)) (L (pol 14.44 -19.85 -2.27) (pol 13.81 -23.99 -2.45)) (L (pol 13.77 -23.94 -2.29) (pol 13.99 -29.13 -2.64)) (L (pol 13.95 -29.26 -2.45) (pol 14.91 -32.18 -2.10)) (L (pol 14.87 -32.43 -2.29) (pol 16.17 -32.58 -2.15)) (L (pol 16.14 -32.92 -2.02) (pol 17.19 -30.43 -1.99)) (L (pol 17.21 -30.24 -1.95) (pol 17.74 -26.77 -1.95)) (L (pol 17.75 -26.84 -1.95) (pol 17.59 -22.79 -1.70)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 126, +Msg: (time (now 531.68))(GS (unum 1) (team left) (sl 0) (sr 0) (t 222.59) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.47 -20.26)) (llowerarm (pol 0.21 28.99 -20.14))) (G2R (pol 30.26 -14.99 0.48)) (G1R (pol 29.78 -11.05 0.48)) (F1R (pol 29.36 6.42 -1.13)) (F2R (pol 33.70 -30.09 -0.90)) (B (pol 8.58 -52.63 -3.44)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.03 -49.97 -1.56) (pol 14.55 12.68 -2.38)) (L (pol 33.72 -29.56 -0.99) (pol 29.39 6.46 -1.02)) (L (pol 29.38 6.33 -1.16) (pol 3.74 59.93 -8.60)) (L (pol 33.71 -29.80 -1.03) (pol 19.42 -60.16 -1.45)) (L (pol 27.66 -7.85 -1.16) (pol 29.11 -19.73 -0.92)) (L (pol 27.68 -7.89 -1.21) (pol 29.42 -7.46 -1.22)) (L (pol 29.07 -19.66 -0.88) (pol 30.85 -18.38 -1.00)) (L (pol 17.52 -22.82 -1.88) (pol 16.78 -19.56 -2.20)) (L (pol 16.78 -19.56 -1.91) (pol 15.61 -18.26 -2.27)) (L (pol 15.61 -18.52 -2.02) (pol 14.46 -19.77 -2.23)) (L (pol 14.44 -19.85 -2.27) (pol 13.81 -23.99 -2.45)) (L (pol 13.77 -23.94 -2.29) (pol 13.99 -29.13 -2.64)) (L (pol 13.95 -29.26 -2.45) (pol 14.91 -32.18 -2.10)) (L (pol 14.87 -32.43 -2.29) (pol 16.17 -32.58 -2.15)) (L (pol 16.14 -32.92 -2.02) (pol 17.19 -30.43 -1.99)) (L (pol 17.21 -30.24 -1.95) (pol 17.74 -26.77 -1.95)) (L (pol 17.75 -26.84 -1.95) (pol 17.59 -22.79 -1.70)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 134, +Msg: (time (now 531.68))(GS (unum 1) (team left) (sl 0) (sr 0) (t 222.59) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.47 -20.26)) (llowerarm (pol 0.21 28.99 -20.14))) (G2R (pol 30.26 -14.99 0.48)) (G1R (pol 29.78 -11.05 0.48)) (F1R (pol 29.36 6.42 -1.13)) (F2R (pol 33.70 -30.09 -0.90)) (B (pol 8.58 -52.63 -3.44)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.03 -49.97 -1.56) (pol 14.55 12.68 -2.38)) (L (pol 33.72 -29.56 -0.99) (pol 29.39 6.46 -1.02)) (L (pol 29.38 6.33 -1.16) (pol 3.74 59.93 -8.60)) (L (pol 33.71 -29.80 -1.03) (pol 19.42 -60.16 -1.45)) (L (pol 27.66 -7.85 -1.16) (pol 29.11 -19.73 -0.92)) (L (pol 27.68 -7.89 -1.21) (pol 29.42 -7.46 -1.22)) (L (pol 29.07 -19.66 -0.88) (pol 30.85 -18.38 -1.00)) (L (pol 17.52 -22.82 -1.88) (pol 16.78 -19.56 -2.20)) (L (pol 16.78 -19.56 -1.91) (pol 15.61 -18.26 -2.27)) (L (pol 15.61 -18.52 -2.02) (pol 14.46 -19.77 -2.23)) (L (pol 14.44 -19.85 -2.27) (pol 13.81 -23.99 -2.45)) (L (pol 13.77 -23.94 -2.29) (pol 13.99 -29.13 -2.64)) (L (pol 13.95 -29.26 -2.45) (pol 14.91 -32.18 -2.10)) (L (pol 14.87 -32.43 -2.29) (pol 16.17 -32.58 -2.15)) (L (pol 16.14 -32.92 -2.02) (pol 17.19 -30.43 -1.99)) (L (pol 17.21 -30.24 -1.95) (pol 17.74 -26.77 -1.95)) (L (pol 17.75 -26.84 -1.95) (pol 17.59 -22.79 -1.70)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 142, +Msg: (time (now 531.68))(GS (unum 1) (team left) (sl 0) (sr 0) (t 222.59) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.47 -20.26)) (llowerarm (pol 0.21 28.99 -20.14))) (G2R (pol 30.26 -14.99 0.48)) (G1R (pol 29.78 -11.05 0.48)) (F1R (pol 29.36 6.42 -1.13)) (F2R (pol 33.70 -30.09 -0.90)) (B (pol 8.58 -52.63 -3.44)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.03 -49.97 -1.56) (pol 14.55 12.68 -2.38)) (L (pol 33.72 -29.56 -0.99) (pol 29.39 6.46 -1.02)) (L (pol 29.38 6.33 -1.16) (pol 3.74 59.93 -8.60)) (L (pol 33.71 -29.80 -1.03) (pol 19.42 -60.16 -1.45)) (L (pol 27.66 -7.85 -1.16) (pol 29.11 -19.73 -0.92)) (L (pol 27.68 -7.89 -1.21) (pol 29.42 -7.46 -1.22)) (L (pol 29.07 -19.66 -0.88) (pol 30.85 -18.38 -1.00)) (L (pol 17.52 -22.82 -1.88) (pol 16.78 -19.56 -2.20)) (L (pol 16.78 -19.56 -1.91) (pol 15.61 -18.26 -2.27)) (L (pol 15.61 -18.52 -2.02) (pol 14.46 -19.77 -2.23)) (L (pol 14.44 -19.85 -2.27) (pol 13.81 -23.99 -2.45)) (L (pol 13.77 -23.94 -2.29) (pol 13.99 -29.13 -2.64)) (L (pol 13.95 -29.26 -2.45) (pol 14.91 -32.18 -2.10)) (L (pol 14.87 -32.43 -2.29) (pol 16.17 -32.58 -2.15)) (L (pol 16.14 -32.92 -2.02) (pol 17.19 -30.43 -1.99)) (L (pol 17.21 -30.24 -1.95) (pol 17.74 -26.77 -1.95)) (L (pol 17.75 -26.84 -1.95) (pol 17.59 -22.79 -1.70)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 150, +Msg: (time (now 531.68))(GS (unum 1) (team left) (sl 0) (sr 0) (t 222.59) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.47 -20.26)) (llowerarm (pol 0.21 28.99 -20.14))) (G2R (pol 30.26 -14.99 0.48)) (G1R (pol 29.78 -11.05 0.48)) (F1R (pol 29.36 6.42 -1.13)) (F2R (pol 33.70 -30.09 -0.90)) (B (pol 8.58 -52.63 -3.44)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.03 -49.97 -1.56) (pol 14.55 12.68 -2.38)) (L (pol 33.72 -29.56 -0.99) (pol 29.39 6.46 -1.02)) (L (pol 29.38 6.33 -1.16) (pol 3.74 59.93 -8.60)) (L (pol 33.71 -29.80 -1.03) (pol 19.42 -60.16 -1.45)) (L (pol 27.66 -7.85 -1.16) (pol 29.11 -19.73 -0.92)) (L (pol 27.68 -7.89 -1.21) (pol 29.42 -7.46 -1.22)) (L (pol 29.07 -19.66 -0.88) (pol 30.85 -18.38 -1.00)) (L (pol 17.52 -22.82 -1.88) (pol 16.78 -19.56 -2.20)) (L (pol 16.78 -19.56 -1.91) (pol 15.61 -18.26 -2.27)) (L (pol 15.61 -18.52 -2.02) (pol 14.46 -19.77 -2.23)) (L (pol 14.44 -19.85 -2.27) (pol 13.81 -23.99 -2.45)) (L (pol 13.77 -23.94 -2.29) (pol 13.99 -29.13 -2.64)) (L (pol 13.95 -29.26 -2.45) (pol 14.91 -32.18 -2.10)) (L (pol 14.87 -32.43 -2.29) (pol 16.17 -32.58 -2.15)) (L (pol 16.14 -32.92 -2.02) (pol 17.19 -30.43 -1.99)) (L (pol 17.21 -30.24 -1.95) (pol 17.74 -26.77 -1.95)) (L (pol 17.75 -26.84 -1.95) (pol 17.59 -22.79 -1.70)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 158, +Msg: (time (now 531.68))(GS (unum 1) (team left) (sl 0) (sr 0) (t 222.59) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.47 -20.26)) (llowerarm (pol 0.21 28.99 -20.14))) (G2R (pol 30.26 -14.99 0.48)) (G1R (pol 29.78 -11.05 0.48)) (F1R (pol 29.36 6.42 -1.13)) (F2R (pol 33.70 -30.09 -0.90)) (B (pol 8.58 -52.63 -3.44)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.03 -49.97 -1.56) (pol 14.55 12.68 -2.38)) (L (pol 33.72 -29.56 -0.99) (pol 29.39 6.46 -1.02)) (L (pol 29.38 6.33 -1.16) (pol 3.74 59.93 -8.60)) (L (pol 33.71 -29.80 -1.03) (pol 19.42 -60.16 -1.45)) (L (pol 27.66 -7.85 -1.16) (pol 29.11 -19.73 -0.92)) (L (pol 27.68 -7.89 -1.21) (pol 29.42 -7.46 -1.22)) (L (pol 29.07 -19.66 -0.88) (pol 30.85 -18.38 -1.00)) (L (pol 17.52 -22.82 -1.88) (pol 16.78 -19.56 -2.20)) (L (pol 16.78 -19.56 -1.91) (pol 15.61 -18.26 -2.27)) (L (pol 15.61 -18.52 -2.02) (pol 14.46 -19.77 -2.23)) (L (pol 14.44 -19.85 -2.27) (pol 13.81 -23.99 -2.45)) (L (pol 13.77 -23.94 -2.29) (pol 13.99 -29.13 -2.64)) (L (pol 13.95 -29.26 -2.45) (pol 14.91 -32.18 -2.10)) (L (pol 14.87 -32.43 -2.29) (pol 16.17 -32.58 -2.15)) (L (pol 16.14 -32.92 -2.02) (pol 17.19 -30.43 -1.99)) (L (pol 17.21 -30.24 -1.95) (pol 17.74 -26.77 -1.95)) (L (pol 17.75 -26.84 -1.95) (pol 17.59 -22.79 -1.70)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 166, +Msg: (time (now 531.68))(GS (unum 1) (team left) (sl 0) (sr 0) (t 222.59) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.47 -20.26)) (llowerarm (pol 0.21 28.99 -20.14))) (G2R (pol 30.26 -14.99 0.48)) (G1R (pol 29.78 -11.05 0.48)) (F1R (pol 29.36 6.42 -1.13)) (F2R (pol 33.70 -30.09 -0.90)) (B (pol 8.58 -52.63 -3.44)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.03 -49.97 -1.56) (pol 14.55 12.68 -2.38)) (L (pol 33.72 -29.56 -0.99) (pol 29.39 6.46 -1.02)) (L (pol 29.38 6.33 -1.16) (pol 3.74 59.93 -8.60)) (L (pol 33.71 -29.80 -1.03) (pol 19.42 -60.16 -1.45)) (L (pol 27.66 -7.85 -1.16) (pol 29.11 -19.73 -0.92)) (L (pol 27.68 -7.89 -1.21) (pol 29.42 -7.46 -1.22)) (L (pol 29.07 -19.66 -0.88) (pol 30.85 -18.38 -1.00)) (L (pol 17.52 -22.82 -1.88) (pol 16.78 -19.56 -2.20)) (L (pol 16.78 -19.56 -1.91) (pol 15.61 -18.26 -2.27)) (L (pol 15.61 -18.52 -2.02) (pol 14.46 -19.77 -2.23)) (L (pol 14.44 -19.85 -2.27) (pol 13.81 -23.99 -2.45)) (L (pol 13.77 -23.94 -2.29) (pol 13.99 -29.13 -2.64)) (L (pol 13.95 -29.26 -2.45) (pol 14.91 -32.18 -2.10)) (L (pol 14.87 -32.43 -2.29) (pol 16.17 -32.58 -2.15)) (L (pol 16.14 -32.92 -2.02) (pol 17.19 -30.43 -1.99)) (L (pol 17.21 -30.24 -1.95) (pol 17.74 -26.77 -1.95)) (L (pol 17.75 -26.84 -1.95) (pol 17.59 -22.79 -1.70)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 174, +Msg: (time (now 531.68))(GS (unum 1) (team left) (sl 0) (sr 0) (t 222.59) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.47 -20.26)) (llowerarm (pol 0.21 28.99 -20.14))) (G2R (pol 30.26 -14.99 0.48)) (G1R (pol 29.78 -11.05 0.48)) (F1R (pol 29.36 6.42 -1.13)) (F2R (pol 33.70 -30.09 -0.90)) (B (pol 8.58 -52.63 -3.44)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.03 -49.97 -1.56) (pol 14.55 12.68 -2.38)) (L (pol 33.72 -29.56 -0.99) (pol 29.39 6.46 -1.02)) (L (pol 29.38 6.33 -1.16) (pol 3.74 59.93 -8.60)) (L (pol 33.71 -29.80 -1.03) (pol 19.42 -60.16 -1.45)) (L (pol 27.66 -7.85 -1.16) (pol 29.11 -19.73 -0.92)) (L (pol 27.68 -7.89 -1.21) (pol 29.42 -7.46 -1.22)) (L (pol 29.07 -19.66 -0.88) (pol 30.85 -18.38 -1.00)) (L (pol 17.52 -22.82 -1.88) (pol 16.78 -19.56 -2.20)) (L (pol 16.78 -19.56 -1.91) (pol 15.61 -18.26 -2.27)) (L (pol 15.61 -18.52 -2.02) (pol 14.46 -19.77 -2.23)) (L (pol 14.44 -19.85 -2.27) (pol 13.81 -23.99 -2.45)) (L (pol 13.77 -23.94 -2.29) (pol 13.99 -29.13 -2.64)) (L (pol 13.95 -29.26 -2.45) (pol 14.91 -32.18 -2.10)) (L (pol 14.87 -32.43 -2.29) (pol 16.17 -32.58 -2.15)) (L (pol 16.14 -32.92 -2.02) (pol 17.19 -30.43 -1.99)) (L (pol 17.21 -30.24 -1.95) (pol 17.74 -26.77 -1.95)) (L (pol 17.75 -26.84 -1.95) (pol 17.59 -22.79 -1.70)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 182, +Msg: (time (now 531.68))(GS (unum 1) (team left) (sl 0) (sr 0) (t 222.59) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.47 -20.26)) (llowerarm (pol 0.21 28.99 -20.14))) (G2R (pol 30.26 -14.99 0.48)) (G1R (pol 29.78 -11.05 0.48)) (F1R (pol 29.36 6.42 -1.13)) (F2R (pol 33.70 -30.09 -0.90)) (B (pol 8.58 -52.63 -3.44)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.03 -49.97 -1.56) (pol 14.55 12.68 -2.38)) (L (pol 33.72 -29.56 -0.99) (pol 29.39 6.46 -1.02)) (L (pol 29.38 6.33 -1.16) (pol 3.74 59.93 -8.60)) (L (pol 33.71 -29.80 -1.03) (pol 19.42 -60.16 -1.45)) (L (pol 27.66 -7.85 -1.16) (pol 29.11 -19.73 -0.92)) (L (pol 27.68 -7.89 -1.21) (pol 29.42 -7.46 -1.22)) (L (pol 29.07 -19.66 -0.88) (pol 30.85 -18.38 -1.00)) (L (pol 17.52 -22.82 -1.88) (pol 16.78 -19.56 -2.20)) (L (pol 16.78 -19.56 -1.91) (pol 15.61 -18.26 -2.27)) (L (pol 15.61 -18.52 -2.02) (pol 14.46 -19.77 -2.23)) (L (pol 14.44 -19.85 -2.27) (pol 13.81 -23.99 -2.45)) (L (pol 13.77 -23.94 -2.29) (pol 13.99 -29.13 -2.64)) (L (pol 13.95 -29.26 -2.45) (pol 14.91 -32.18 -2.10)) (L (pol 14.87 -32.43 -2.29) (pol 16.17 -32.58 -2.15)) (L (pol 16.14 -32.92 -2.02) (pol 17.19 -30.43 -1.99)) (L (pol 17.21 -30.24 -1.95) (pol 17.74 -26.77 -1.95)) (L (pol 17.75 -26.84 -1.95) (pol 17.59 -22.79 -1.70)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 190, +Msg: (time (now 531.68))(GS (unum 1) (team left) (sl 0) (sr 0) (t 222.59) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.47 -20.26)) (llowerarm (pol 0.21 28.99 -20.14))) (G2R (pol 30.26 -14.99 0.48)) (G1R (pol 29.78 -11.05 0.48)) (F1R (pol 29.36 6.42 -1.13)) (F2R (pol 33.70 -30.09 -0.90)) (B (pol 8.58 -52.63 -3.44)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.03 -49.97 -1.56) (pol 14.55 12.68 -2.38)) (L (pol 33.72 -29.56 -0.99) (pol 29.39 6.46 -1.02)) (L (pol 29.38 6.33 -1.16) (pol 3.74 59.93 -8.60)) (L (pol 33.71 -29.80 -1.03) (pol 19.42 -60.16 -1.45)) (L (pol 27.66 -7.85 -1.16) (pol 29.11 -19.73 -0.92)) (L (pol 27.68 -7.89 -1.21) (pol 29.42 -7.46 -1.22)) (L (pol 29.07 -19.66 -0.88) (pol 30.85 -18.38 -1.00)) (L (pol 17.52 -22.82 -1.88) (pol 16.78 -19.56 -2.20)) (L (pol 16.78 -19.56 -1.91) (pol 15.61 -18.26 -2.27)) (L (pol 15.61 -18.52 -2.02) (pol 14.46 -19.77 -2.23)) (L (pol 14.44 -19.85 -2.27) (pol 13.81 -23.99 -2.45)) (L (pol 13.77 -23.94 -2.29) (pol 13.99 -29.13 -2.64)) (L (pol 13.95 -29.26 -2.45) (pol 14.91 -32.18 -2.10)) (L (pol 14.87 -32.43 -2.29) (pol 16.17 -32.58 -2.15)) (L (pol 16.14 -32.92 -2.02) (pol 17.19 -30.43 -1.99)) (L (pol 17.21 -30.24 -1.95) (pol 17.74 -26.77 -1.95)) (L (pol 17.75 -26.84 -1.95) (pol 17.59 -22.79 -1.70)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 198, +Msg: (time (now 531.68))(GS (unum 1) (team left) (sl 0) (sr 0) (t 222.59) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.47 -20.26)) (llowerarm (pol 0.21 28.99 -20.14))) (G2R (pol 30.26 -14.99 0.48)) (G1R (pol 29.78 -11.05 0.48)) (F1R (pol 29.36 6.42 -1.13)) (F2R (pol 33.70 -30.09 -0.90)) (B (pol 8.58 -52.63 -3.44)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.03 -49.97 -1.56) (pol 14.55 12.68 -2.38)) (L (pol 33.72 -29.56 -0.99) (pol 29.39 6.46 -1.02)) (L (pol 29.38 6.33 -1.16) (pol 3.74 59.93 -8.60)) (L (pol 33.71 -29.80 -1.03) (pol 19.42 -60.16 -1.45)) (L (pol 27.66 -7.85 -1.16) (pol 29.11 -19.73 -0.92)) (L (pol 27.68 -7.89 -1.21) (pol 29.42 -7.46 -1.22)) (L (pol 29.07 -19.66 -0.88) (pol 30.85 -18.38 -1.00)) (L (pol 17.52 -22.82 -1.88) (pol 16.78 -19.56 -2.20)) (L (pol 16.78 -19.56 -1.91) (pol 15.61 -18.26 -2.27)) (L (pol 15.61 -18.52 -2.02) (pol 14.46 -19.77 -2.23)) (L (pol 14.44 -19.85 -2.27) (pol 13.81 -23.99 -2.45)) (L (pol 13.77 -23.94 -2.29) (pol 13.99 -29.13 -2.64)) (L (pol 13.95 -29.26 -2.45) (pol 14.91 -32.18 -2.10)) (L (pol 14.87 -32.43 -2.29) (pol 16.17 -32.58 -2.15)) (L (pol 16.14 -32.92 -2.02) (pol 17.19 -30.43 -1.99)) (L (pol 17.21 -30.24 -1.95) (pol 17.74 -26.77 -1.95)) (L (pol 17.75 -26.84 -1.95) (pol 17.59 -22.79 -1.70)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 206, +Msg: (time (now 531.68))(GS (unum 1) (team left) (sl 0) (sr 0) (t 222.59) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.47 -20.26)) (llowerarm (pol 0.21 28.99 -20.14))) (G2R (pol 30.26 -14.99 0.48)) (G1R (pol 29.78 -11.05 0.48)) (F1R (pol 29.36 6.42 -1.13)) (F2R (pol 33.70 -30.09 -0.90)) (B (pol 8.58 -52.63 -3.44)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.03 -49.97 -1.56) (pol 14.55 12.68 -2.38)) (L (pol 33.72 -29.56 -0.99) (pol 29.39 6.46 -1.02)) (L (pol 29.38 6.33 -1.16) (pol 3.74 59.93 -8.60)) (L (pol 33.71 -29.80 -1.03) (pol 19.42 -60.16 -1.45)) (L (pol 27.66 -7.85 -1.16) (pol 29.11 -19.73 -0.92)) (L (pol 27.68 -7.89 -1.21) (pol 29.42 -7.46 -1.22)) (L (pol 29.07 -19.66 -0.88) (pol 30.85 -18.38 -1.00)) (L (pol 17.52 -22.82 -1.88) (pol 16.78 -19.56 -2.20)) (L (pol 16.78 -19.56 -1.91) (pol 15.61 -18.26 -2.27)) (L (pol 15.61 -18.52 -2.02) (pol 14.46 -19.77 -2.23)) (L (pol 14.44 -19.85 -2.27) (pol 13.81 -23.99 -2.45)) (L (pol 13.77 -23.94 -2.29) (pol 13.99 -29.13 -2.64)) (L (pol 13.95 -29.26 -2.45) (pol 14.91 -32.18 -2.10)) (L (pol 14.87 -32.43 -2.29) (pol 16.17 -32.58 -2.15)) (L (pol 16.14 -32.92 -2.02) (pol 17.19 -30.43 -1.99)) (L (pol 17.21 -30.24 -1.95) (pol 17.74 -26.77 -1.95)) (L (pol 17.75 -26.84 -1.95) (pol 17.59 -22.79 -1.70)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 214, +Msg: (time (now 531.68))(GS (unum 1) (team left) (sl 0) (sr 0) (t 222.59) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.47 -20.26)) (llowerarm (pol 0.21 28.99 -20.14))) (G2R (pol 30.26 -14.99 0.48)) (G1R (pol 29.78 -11.05 0.48)) (F1R (pol 29.36 6.42 -1.13)) (F2R (pol 33.70 -30.09 -0.90)) (B (pol 8.58 -52.63 -3.44)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.03 -49.97 -1.56) (pol 14.55 12.68 -2.38)) (L (pol 33.72 -29.56 -0.99) (pol 29.39 6.46 -1.02)) (L (pol 29.38 6.33 -1.16) (pol 3.74 59.93 -8.60)) (L (pol 33.71 -29.80 -1.03) (pol 19.42 -60.16 -1.45)) (L (pol 27.66 -7.85 -1.16) (pol 29.11 -19.73 -0.92)) (L (pol 27.68 -7.89 -1.21) (pol 29.42 -7.46 -1.22)) (L (pol 29.07 -19.66 -0.88) (pol 30.85 -18.38 -1.00)) (L (pol 17.52 -22.82 -1.88) (pol 16.78 -19.56 -2.20)) (L (pol 16.78 -19.56 -1.91) (pol 15.61 -18.26 -2.27)) (L (pol 15.61 -18.52 -2.02) (pol 14.46 -19.77 -2.23)) (L (pol 14.44 -19.85 -2.27) (pol 13.81 -23.99 -2.45)) (L (pol 13.77 -23.94 -2.29) (pol 13.99 -29.13 -2.64)) (L (pol 13.95 -29.26 -2.45) (pol 14.91 -32.18 -2.10)) (L (pol 14.87 -32.43 -2.29) (pol 16.17 -32.58 -2.15)) (L (pol 16.14 -32.92 -2.02) (pol 17.19 -30.43 -1.99)) (L (pol 17.21 -30.24 -1.95) (pol 17.74 -26.77 -1.95)) (L (pol 17.75 -26.84 -1.95) (pol 17.59 -22.79 -1.70)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:34:36 Step:5} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:34:37 Step:5} Server_Comm.py: Received a new packet while on world.update()! diff --git a/logs/2025-11-04_20.34.36__CBVZIH/Gym_1.log b/logs/2025-11-04_20.34.36__CBVZIH/Gym_1.log new file mode 100644 index 0000000..aad4b80 --- /dev/null +++ b/logs/2025-11-04_20.34.36__CBVZIH/Gym_1.log @@ -0,0 +1,11 @@ +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 86, +Msg: (time (now 528.01))(GS (unum 1) (team left) (sl 0) (sr 0) (t 216.81) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.51 -20.42)) (llowerarm (pol 0.22 28.39 -20.80))) (G2R (pol 30.18 -15.19 0.53)) (G1R (pol 29.78 -10.94 0.62)) (F1R (pol 29.39 6.23 -1.07)) (F2R (pol 33.70 -29.69 -1.01)) (B (pol 8.59 -52.93 -3.28)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.04 -49.89 -1.58) (pol 14.58 12.56 -2.20)) (L (pol 33.67 -30.07 -1.06) (pol 29.37 6.28 -1.22)) (L (pol 29.36 6.26 -1.06) (pol 3.73 60.10 -8.55)) (L (pol 33.73 -29.79 -0.93) (pol 19.40 -59.94 -1.51)) (L (pol 27.67 -7.56 -1.07) (pol 29.08 -19.97 -1.03)) (L (pol 27.67 -7.87 -1.12) (pol 29.37 -7.66 -1.17)) (L (pol 29.08 -19.77 -1.25) (pol 30.80 -18.43 -0.98)) (L (pol 17.58 -22.61 -1.91) (pol 16.78 -19.70 -2.00)) (L (pol 16.79 -19.34 -1.84) (pol 15.63 -18.12 -1.99)) (L (pol 15.59 -18.46 -2.21) (pol 14.44 -19.86 -2.27)) (L (pol 14.45 -19.93 -2.17) (pol 13.80 -24.21 -2.39)) (L (pol 13.82 -23.99 -2.21) (pol 13.97 -29.11 -2.04)) (L (pol 13.97 -28.90 -2.52) (pol 14.92 -32.40 -2.17)) (L (pol 14.91 -32.38 -2.34) (pol 16.10 -32.78 -1.81)) (L (pol 16.15 -32.60 -1.89) (pol 17.20 -30.35 -2.04)) (L (pol 17.20 -30.53 -1.69) (pol 17.72 -26.70 -1.87)) (L (pol 17.73 -26.92 -1.90) (pol 17.61 -23.08 -1.97)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 94, +Msg: (time (now 528.01))(GS (unum 1) (team left) (sl 0) (sr 0) (t 216.81) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.51 -20.42)) (llowerarm (pol 0.22 28.39 -20.80))) (G2R (pol 30.18 -15.19 0.53)) (G1R (pol 29.78 -10.94 0.62)) (F1R (pol 29.39 6.23 -1.07)) (F2R (pol 33.70 -29.69 -1.01)) (B (pol 8.59 -52.93 -3.28)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.04 -49.89 -1.58) (pol 14.58 12.56 -2.20)) (L (pol 33.67 -30.07 -1.06) (pol 29.37 6.28 -1.22)) (L (pol 29.36 6.26 -1.06) (pol 3.73 60.10 -8.55)) (L (pol 33.73 -29.79 -0.93) (pol 19.40 -59.94 -1.51)) (L (pol 27.67 -7.56 -1.07) (pol 29.08 -19.97 -1.03)) (L (pol 27.67 -7.87 -1.12) (pol 29.37 -7.66 -1.17)) (L (pol 29.08 -19.77 -1.25) (pol 30.80 -18.43 -0.98)) (L (pol 17.58 -22.61 -1.91) (pol 16.78 -19.70 -2.00)) (L (pol 16.79 -19.34 -1.84) (pol 15.63 -18.12 -1.99)) (L (pol 15.59 -18.46 -2.21) (pol 14.44 -19.86 -2.27)) (L (pol 14.45 -19.93 -2.17) (pol 13.80 -24.21 -2.39)) (L (pol 13.82 -23.99 -2.21) (pol 13.97 -29.11 -2.04)) (L (pol 13.97 -28.90 -2.52) (pol 14.92 -32.40 -2.17)) (L (pol 14.91 -32.38 -2.34) (pol 16.10 -32.78 -1.81)) (L (pol 16.15 -32.60 -1.89) (pol 17.20 -30.35 -2.04)) (L (pol 17.20 -30.53 -1.69) (pol 17.72 -26.70 -1.87)) (L (pol 17.73 -26.92 -1.90) (pol 17.61 -23.08 -1.97)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 102, +Msg: (time (now 528.01))(GS (unum 1) (team left) (sl 0) (sr 0) (t 216.81) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.51 -20.42)) (llowerarm (pol 0.22 28.39 -20.80))) (G2R (pol 30.18 -15.19 0.53)) (G1R (pol 29.78 -10.94 0.62)) (F1R (pol 29.39 6.23 -1.07)) (F2R (pol 33.70 -29.69 -1.01)) (B (pol 8.59 -52.93 -3.28)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.04 -49.89 -1.58) (pol 14.58 12.56 -2.20)) (L (pol 33.67 -30.07 -1.06) (pol 29.37 6.28 -1.22)) (L (pol 29.36 6.26 -1.06) (pol 3.73 60.10 -8.55)) (L (pol 33.73 -29.79 -0.93) (pol 19.40 -59.94 -1.51)) (L (pol 27.67 -7.56 -1.07) (pol 29.08 -19.97 -1.03)) (L (pol 27.67 -7.87 -1.12) (pol 29.37 -7.66 -1.17)) (L (pol 29.08 -19.77 -1.25) (pol 30.80 -18.43 -0.98)) (L (pol 17.58 -22.61 -1.91) (pol 16.78 -19.70 -2.00)) (L (pol 16.79 -19.34 -1.84) (pol 15.63 -18.12 -1.99)) (L (pol 15.59 -18.46 -2.21) (pol 14.44 -19.86 -2.27)) (L (pol 14.45 -19.93 -2.17) (pol 13.80 -24.21 -2.39)) (L (pol 13.82 -23.99 -2.21) (pol 13.97 -29.11 -2.04)) (L (pol 13.97 -28.90 -2.52) (pol 14.92 -32.40 -2.17)) (L (pol 14.91 -32.38 -2.34) (pol 16.10 -32.78 -1.81)) (L (pol 16.15 -32.60 -1.89) (pol 17.20 -30.35 -2.04)) (L (pol 17.20 -30.53 -1.69) (pol 17.72 -26.70 -1.87)) (L (pol 17.73 -26.92 -1.90) (pol 17.61 -23.08 -1.97)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 110, +Msg: (time (now 528.01))(GS (unum 1) (team left) (sl 0) (sr 0) (t 216.81) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.51 -20.42)) (llowerarm (pol 0.22 28.39 -20.80))) (G2R (pol 30.18 -15.19 0.53)) (G1R (pol 29.78 -10.94 0.62)) (F1R (pol 29.39 6.23 -1.07)) (F2R (pol 33.70 -29.69 -1.01)) (B (pol 8.59 -52.93 -3.28)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.04 -49.89 -1.58) (pol 14.58 12.56 -2.20)) (L (pol 33.67 -30.07 -1.06) (pol 29.37 6.28 -1.22)) (L (pol 29.36 6.26 -1.06) (pol 3.73 60.10 -8.55)) (L (pol 33.73 -29.79 -0.93) (pol 19.40 -59.94 -1.51)) (L (pol 27.67 -7.56 -1.07) (pol 29.08 -19.97 -1.03)) (L (pol 27.67 -7.87 -1.12) (pol 29.37 -7.66 -1.17)) (L (pol 29.08 -19.77 -1.25) (pol 30.80 -18.43 -0.98)) (L (pol 17.58 -22.61 -1.91) (pol 16.78 -19.70 -2.00)) (L (pol 16.79 -19.34 -1.84) (pol 15.63 -18.12 -1.99)) (L (pol 15.59 -18.46 -2.21) (pol 14.44 -19.86 -2.27)) (L (pol 14.45 -19.93 -2.17) (pol 13.80 -24.21 -2.39)) (L (pol 13.82 -23.99 -2.21) (pol 13.97 -29.11 -2.04)) (L (pol 13.97 -28.90 -2.52) (pol 14.92 -32.40 -2.17)) (L (pol 14.91 -32.38 -2.34) (pol 16.10 -32.78 -1.81)) (L (pol 16.15 -32.60 -1.89) (pol 17.20 -30.35 -2.04)) (L (pol 17.20 -30.53 -1.69) (pol 17.72 -26.70 -1.87)) (L (pol 17.73 -26.92 -1.90) (pol 17.61 -23.08 -1.97)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:34:36 Step:5} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:34:36 Step:5} Server_Comm.py: Received a new packet while on world.update()! diff --git a/logs/2025-11-04_20.34.36__YCEEDM/Gym_1.log b/logs/2025-11-04_20.34.36__YCEEDM/Gym_1.log new file mode 100644 index 0000000..3084f42 --- /dev/null +++ b/logs/2025-11-04_20.34.36__YCEEDM/Gym_1.log @@ -0,0 +1,20 @@ +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 86, +Msg: (time (now 531.26))(GS (unum 1) (team left) (sl 0) (sr 0) (t 155.48) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -30.12 -20.46)) (llowerarm (pol 0.21 28.71 -20.53))) (G2R (pol 30.55 -17.38 0.44)) (G1R (pol 30.03 -13.42 0.42)) (F1R (pol 29.28 3.92 -1.28)) (F2R (pol 34.38 -31.69 -0.92)) (B (pol 9.55 -57.08 -3.29)) (mypos -14.20 8.00 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.93 -51.47 -1.57) (pol 14.33 7.86 -2.51)) (L (pol 34.29 -31.69 -0.92) (pol 29.30 3.92 -1.10)) (L (pol 29.27 3.84 -1.35) (pol 2.38 60.08 -13.72)) (L (pol 34.28 -31.75 -1.00) (pol 20.82 -60.13 -1.69)) (L (pol 27.84 -10.41 -1.12) (pol 29.49 -22.00 -1.06)) (L (pol 27.87 -10.14 -1.30) (pol 29.66 -9.63 -0.89)) (L (pol 29.55 -22.00 -1.28) (pol 31.14 -20.77 -0.94)) (L (pol 18.07 -26.35 -1.77) (pol 17.22 -23.51 -2.01)) (L (pol 17.22 -23.33 -1.86) (pol 16.01 -22.45 -1.86)) (L (pol 16.04 -22.61 -1.65) (pol 14.89 -24.15 -2.32)) (L (pol 14.91 -24.22 -2.12) (pol 14.34 -28.62 -2.26)) (L (pol 14.29 -28.61 -2.22) (pol 14.61 -33.06 -2.23)) (L (pol 14.62 -33.11 -2.10) (pol 15.57 -36.06 -1.90)) (L (pol 15.60 -36.12 -2.10) (pol 16.81 -35.98 -2.02)) (L (pol 16.82 -36.20 -1.80) (pol 17.84 -33.83 -1.85)) (L (pol 17.81 -33.56 -1.79) (pol 18.30 -30.13 -1.73)) (L (pol 18.31 -30.05 -1.53) (pol 18.08 -26.41 -1.60)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 94, +Msg: (time (now 531.26))(GS (unum 1) (team left) (sl 0) (sr 0) (t 155.48) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -30.12 -20.46)) (llowerarm (pol 0.21 28.71 -20.53))) (G2R (pol 30.55 -17.38 0.44)) (G1R (pol 30.03 -13.42 0.42)) (F1R (pol 29.28 3.92 -1.28)) (F2R (pol 34.38 -31.69 -0.92)) (B (pol 9.55 -57.08 -3.29)) (mypos -14.20 8.00 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.93 -51.47 -1.57) (pol 14.33 7.86 -2.51)) (L (pol 34.29 -31.69 -0.92) (pol 29.30 3.92 -1.10)) (L (pol 29.27 3.84 -1.35) (pol 2.38 60.08 -13.72)) (L (pol 34.28 -31.75 -1.00) (pol 20.82 -60.13 -1.69)) (L (pol 27.84 -10.41 -1.12) (pol 29.49 -22.00 -1.06)) (L (pol 27.87 -10.14 -1.30) (pol 29.66 -9.63 -0.89)) (L (pol 29.55 -22.00 -1.28) (pol 31.14 -20.77 -0.94)) (L (pol 18.07 -26.35 -1.77) (pol 17.22 -23.51 -2.01)) (L (pol 17.22 -23.33 -1.86) (pol 16.01 -22.45 -1.86)) (L (pol 16.04 -22.61 -1.65) (pol 14.89 -24.15 -2.32)) (L (pol 14.91 -24.22 -2.12) (pol 14.34 -28.62 -2.26)) (L (pol 14.29 -28.61 -2.22) (pol 14.61 -33.06 -2.23)) (L (pol 14.62 -33.11 -2.10) (pol 15.57 -36.06 -1.90)) (L (pol 15.60 -36.12 -2.10) (pol 16.81 -35.98 -2.02)) (L (pol 16.82 -36.20 -1.80) (pol 17.84 -33.83 -1.85)) (L (pol 17.81 -33.56 -1.79) (pol 18.30 -30.13 -1.73)) (L (pol 18.31 -30.05 -1.53) (pol 18.08 -26.41 -1.60)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 102, +Msg: (time (now 531.26))(GS (unum 1) (team left) (sl 0) (sr 0) (t 155.48) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -30.12 -20.46)) (llowerarm (pol 0.21 28.71 -20.53))) (G2R (pol 30.55 -17.38 0.44)) (G1R (pol 30.03 -13.42 0.42)) (F1R (pol 29.28 3.92 -1.28)) (F2R (pol 34.38 -31.69 -0.92)) (B (pol 9.55 -57.08 -3.29)) (mypos -14.20 8.00 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.93 -51.47 -1.57) (pol 14.33 7.86 -2.51)) (L (pol 34.29 -31.69 -0.92) (pol 29.30 3.92 -1.10)) (L (pol 29.27 3.84 -1.35) (pol 2.38 60.08 -13.72)) (L (pol 34.28 -31.75 -1.00) (pol 20.82 -60.13 -1.69)) (L (pol 27.84 -10.41 -1.12) (pol 29.49 -22.00 -1.06)) (L (pol 27.87 -10.14 -1.30) (pol 29.66 -9.63 -0.89)) (L (pol 29.55 -22.00 -1.28) (pol 31.14 -20.77 -0.94)) (L (pol 18.07 -26.35 -1.77) (pol 17.22 -23.51 -2.01)) (L (pol 17.22 -23.33 -1.86) (pol 16.01 -22.45 -1.86)) (L (pol 16.04 -22.61 -1.65) (pol 14.89 -24.15 -2.32)) (L (pol 14.91 -24.22 -2.12) (pol 14.34 -28.62 -2.26)) (L (pol 14.29 -28.61 -2.22) (pol 14.61 -33.06 -2.23)) (L (pol 14.62 -33.11 -2.10) (pol 15.57 -36.06 -1.90)) (L (pol 15.60 -36.12 -2.10) (pol 16.81 -35.98 -2.02)) (L (pol 16.82 -36.20 -1.80) (pol 17.84 -33.83 -1.85)) (L (pol 17.81 -33.56 -1.79) (pol 18.30 -30.13 -1.73)) (L (pol 18.31 -30.05 -1.53) (pol 18.08 -26.41 -1.60)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 110, +Msg: (time (now 531.26))(GS (unum 1) (team left) (sl 0) (sr 0) (t 155.48) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -30.12 -20.46)) (llowerarm (pol 0.21 28.71 -20.53))) (G2R (pol 30.55 -17.38 0.44)) (G1R (pol 30.03 -13.42 0.42)) (F1R (pol 29.28 3.92 -1.28)) (F2R (pol 34.38 -31.69 -0.92)) (B (pol 9.55 -57.08 -3.29)) (mypos -14.20 8.00 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.93 -51.47 -1.57) (pol 14.33 7.86 -2.51)) (L (pol 34.29 -31.69 -0.92) (pol 29.30 3.92 -1.10)) (L (pol 29.27 3.84 -1.35) (pol 2.38 60.08 -13.72)) (L (pol 34.28 -31.75 -1.00) (pol 20.82 -60.13 -1.69)) (L (pol 27.84 -10.41 -1.12) (pol 29.49 -22.00 -1.06)) (L (pol 27.87 -10.14 -1.30) (pol 29.66 -9.63 -0.89)) (L (pol 29.55 -22.00 -1.28) (pol 31.14 -20.77 -0.94)) (L (pol 18.07 -26.35 -1.77) (pol 17.22 -23.51 -2.01)) (L (pol 17.22 -23.33 -1.86) (pol 16.01 -22.45 -1.86)) (L (pol 16.04 -22.61 -1.65) (pol 14.89 -24.15 -2.32)) (L (pol 14.91 -24.22 -2.12) (pol 14.34 -28.62 -2.26)) (L (pol 14.29 -28.61 -2.22) (pol 14.61 -33.06 -2.23)) (L (pol 14.62 -33.11 -2.10) (pol 15.57 -36.06 -1.90)) (L (pol 15.60 -36.12 -2.10) (pol 16.81 -35.98 -2.02)) (L (pol 16.82 -36.20 -1.80) (pol 17.84 -33.83 -1.85)) (L (pol 17.81 -33.56 -1.79) (pol 18.30 -30.13 -1.73)) (L (pol 18.31 -30.05 -1.53) (pol 18.08 -26.41 -1.60)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 118, +Msg: (time (now 531.26))(GS (unum 1) (team left) (sl 0) (sr 0) (t 155.48) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -30.12 -20.46)) (llowerarm (pol 0.21 28.71 -20.53))) (G2R (pol 30.55 -17.38 0.44)) (G1R (pol 30.03 -13.42 0.42)) (F1R (pol 29.28 3.92 -1.28)) (F2R (pol 34.38 -31.69 -0.92)) (B (pol 9.55 -57.08 -3.29)) (mypos -14.20 8.00 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.93 -51.47 -1.57) (pol 14.33 7.86 -2.51)) (L (pol 34.29 -31.69 -0.92) (pol 29.30 3.92 -1.10)) (L (pol 29.27 3.84 -1.35) (pol 2.38 60.08 -13.72)) (L (pol 34.28 -31.75 -1.00) (pol 20.82 -60.13 -1.69)) (L (pol 27.84 -10.41 -1.12) (pol 29.49 -22.00 -1.06)) (L (pol 27.87 -10.14 -1.30) (pol 29.66 -9.63 -0.89)) (L (pol 29.55 -22.00 -1.28) (pol 31.14 -20.77 -0.94)) (L (pol 18.07 -26.35 -1.77) (pol 17.22 -23.51 -2.01)) (L (pol 17.22 -23.33 -1.86) (pol 16.01 -22.45 -1.86)) (L (pol 16.04 -22.61 -1.65) (pol 14.89 -24.15 -2.32)) (L (pol 14.91 -24.22 -2.12) (pol 14.34 -28.62 -2.26)) (L (pol 14.29 -28.61 -2.22) (pol 14.61 -33.06 -2.23)) (L (pol 14.62 -33.11 -2.10) (pol 15.57 -36.06 -1.90)) (L (pol 15.60 -36.12 -2.10) (pol 16.81 -35.98 -2.02)) (L (pol 16.82 -36.20 -1.80) (pol 17.84 -33.83 -1.85)) (L (pol 17.81 -33.56 -1.79) (pol 18.30 -30.13 -1.73)) (L (pol 18.31 -30.05 -1.53) (pol 18.08 -26.41 -1.60)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 126, +Msg: (time (now 531.26))(GS (unum 1) (team left) (sl 0) (sr 0) (t 155.48) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -30.12 -20.46)) (llowerarm (pol 0.21 28.71 -20.53))) (G2R (pol 30.55 -17.38 0.44)) (G1R (pol 30.03 -13.42 0.42)) (F1R (pol 29.28 3.92 -1.28)) (F2R (pol 34.38 -31.69 -0.92)) (B (pol 9.55 -57.08 -3.29)) (mypos -14.20 8.00 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.93 -51.47 -1.57) (pol 14.33 7.86 -2.51)) (L (pol 34.29 -31.69 -0.92) (pol 29.30 3.92 -1.10)) (L (pol 29.27 3.84 -1.35) (pol 2.38 60.08 -13.72)) (L (pol 34.28 -31.75 -1.00) (pol 20.82 -60.13 -1.69)) (L (pol 27.84 -10.41 -1.12) (pol 29.49 -22.00 -1.06)) (L (pol 27.87 -10.14 -1.30) (pol 29.66 -9.63 -0.89)) (L (pol 29.55 -22.00 -1.28) (pol 31.14 -20.77 -0.94)) (L (pol 18.07 -26.35 -1.77) (pol 17.22 -23.51 -2.01)) (L (pol 17.22 -23.33 -1.86) (pol 16.01 -22.45 -1.86)) (L (pol 16.04 -22.61 -1.65) (pol 14.89 -24.15 -2.32)) (L (pol 14.91 -24.22 -2.12) (pol 14.34 -28.62 -2.26)) (L (pol 14.29 -28.61 -2.22) (pol 14.61 -33.06 -2.23)) (L (pol 14.62 -33.11 -2.10) (pol 15.57 -36.06 -1.90)) (L (pol 15.60 -36.12 -2.10) (pol 16.81 -35.98 -2.02)) (L (pol 16.82 -36.20 -1.80) (pol 17.84 -33.83 -1.85)) (L (pol 17.81 -33.56 -1.79) (pol 18.30 -30.13 -1.73)) (L (pol 18.31 -30.05 -1.53) (pol 18.08 -26.41 -1.60)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 134, +Msg: (time (now 531.26))(GS (unum 1) (team left) (sl 0) (sr 0) (t 155.48) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -30.12 -20.46)) (llowerarm (pol 0.21 28.71 -20.53))) (G2R (pol 30.55 -17.38 0.44)) (G1R (pol 30.03 -13.42 0.42)) (F1R (pol 29.28 3.92 -1.28)) (F2R (pol 34.38 -31.69 -0.92)) (B (pol 9.55 -57.08 -3.29)) (mypos -14.20 8.00 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.93 -51.47 -1.57) (pol 14.33 7.86 -2.51)) (L (pol 34.29 -31.69 -0.92) (pol 29.30 3.92 -1.10)) (L (pol 29.27 3.84 -1.35) (pol 2.38 60.08 -13.72)) (L (pol 34.28 -31.75 -1.00) (pol 20.82 -60.13 -1.69)) (L (pol 27.84 -10.41 -1.12) (pol 29.49 -22.00 -1.06)) (L (pol 27.87 -10.14 -1.30) (pol 29.66 -9.63 -0.89)) (L (pol 29.55 -22.00 -1.28) (pol 31.14 -20.77 -0.94)) (L (pol 18.07 -26.35 -1.77) (pol 17.22 -23.51 -2.01)) (L (pol 17.22 -23.33 -1.86) (pol 16.01 -22.45 -1.86)) (L (pol 16.04 -22.61 -1.65) (pol 14.89 -24.15 -2.32)) (L (pol 14.91 -24.22 -2.12) (pol 14.34 -28.62 -2.26)) (L (pol 14.29 -28.61 -2.22) (pol 14.61 -33.06 -2.23)) (L (pol 14.62 -33.11 -2.10) (pol 15.57 -36.06 -1.90)) (L (pol 15.60 -36.12 -2.10) (pol 16.81 -35.98 -2.02)) (L (pol 16.82 -36.20 -1.80) (pol 17.84 -33.83 -1.85)) (L (pol 17.81 -33.56 -1.79) (pol 18.30 -30.13 -1.73)) (L (pol 18.31 -30.05 -1.53) (pol 18.08 -26.41 -1.60)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 142, +Msg: (time (now 531.26))(GS (unum 1) (team left) (sl 0) (sr 0) (t 155.48) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -30.12 -20.46)) (llowerarm (pol 0.21 28.71 -20.53))) (G2R (pol 30.55 -17.38 0.44)) (G1R (pol 30.03 -13.42 0.42)) (F1R (pol 29.28 3.92 -1.28)) (F2R (pol 34.38 -31.69 -0.92)) (B (pol 9.55 -57.08 -3.29)) (mypos -14.20 8.00 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.93 -51.47 -1.57) (pol 14.33 7.86 -2.51)) (L (pol 34.29 -31.69 -0.92) (pol 29.30 3.92 -1.10)) (L (pol 29.27 3.84 -1.35) (pol 2.38 60.08 -13.72)) (L (pol 34.28 -31.75 -1.00) (pol 20.82 -60.13 -1.69)) (L (pol 27.84 -10.41 -1.12) (pol 29.49 -22.00 -1.06)) (L (pol 27.87 -10.14 -1.30) (pol 29.66 -9.63 -0.89)) (L (pol 29.55 -22.00 -1.28) (pol 31.14 -20.77 -0.94)) (L (pol 18.07 -26.35 -1.77) (pol 17.22 -23.51 -2.01)) (L (pol 17.22 -23.33 -1.86) (pol 16.01 -22.45 -1.86)) (L (pol 16.04 -22.61 -1.65) (pol 14.89 -24.15 -2.32)) (L (pol 14.91 -24.22 -2.12) (pol 14.34 -28.62 -2.26)) (L (pol 14.29 -28.61 -2.22) (pol 14.61 -33.06 -2.23)) (L (pol 14.62 -33.11 -2.10) (pol 15.57 -36.06 -1.90)) (L (pol 15.60 -36.12 -2.10) (pol 16.81 -35.98 -2.02)) (L (pol 16.82 -36.20 -1.80) (pol 17.84 -33.83 -1.85)) (L (pol 17.81 -33.56 -1.79) (pol 18.30 -30.13 -1.73)) (L (pol 18.31 -30.05 -1.53) (pol 18.08 -26.41 -1.60)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 150, +Msg: (time (now 531.26))(GS (unum 1) (team left) (sl 0) (sr 0) (t 155.48) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -30.12 -20.46)) (llowerarm (pol 0.21 28.71 -20.53))) (G2R (pol 30.55 -17.38 0.44)) (G1R (pol 30.03 -13.42 0.42)) (F1R (pol 29.28 3.92 -1.28)) (F2R (pol 34.38 -31.69 -0.92)) (B (pol 9.55 -57.08 -3.29)) (mypos -14.20 8.00 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.93 -51.47 -1.57) (pol 14.33 7.86 -2.51)) (L (pol 34.29 -31.69 -0.92) (pol 29.30 3.92 -1.10)) (L (pol 29.27 3.84 -1.35) (pol 2.38 60.08 -13.72)) (L (pol 34.28 -31.75 -1.00) (pol 20.82 -60.13 -1.69)) (L (pol 27.84 -10.41 -1.12) (pol 29.49 -22.00 -1.06)) (L (pol 27.87 -10.14 -1.30) (pol 29.66 -9.63 -0.89)) (L (pol 29.55 -22.00 -1.28) (pol 31.14 -20.77 -0.94)) (L (pol 18.07 -26.35 -1.77) (pol 17.22 -23.51 -2.01)) (L (pol 17.22 -23.33 -1.86) (pol 16.01 -22.45 -1.86)) (L (pol 16.04 -22.61 -1.65) (pol 14.89 -24.15 -2.32)) (L (pol 14.91 -24.22 -2.12) (pol 14.34 -28.62 -2.26)) (L (pol 14.29 -28.61 -2.22) (pol 14.61 -33.06 -2.23)) (L (pol 14.62 -33.11 -2.10) (pol 15.57 -36.06 -1.90)) (L (pol 15.60 -36.12 -2.10) (pol 16.81 -35.98 -2.02)) (L (pol 16.82 -36.20 -1.80) (pol 17.84 -33.83 -1.85)) (L (pol 17.81 -33.56 -1.79) (pol 18.30 -30.13 -1.73)) (L (pol 18.31 -30.05 -1.53) (pol 18.08 -26.41 -1.60)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:36 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 158, +Msg: (time (now 531.26))(GS (unum 1) (team left) (sl 0) (sr 0) (t 155.48) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -30.12 -20.46)) (llowerarm (pol 0.21 28.71 -20.53))) (G2R (pol 30.55 -17.38 0.44)) (G1R (pol 30.03 -13.42 0.42)) (F1R (pol 29.28 3.92 -1.28)) (F2R (pol 34.38 -31.69 -0.92)) (B (pol 9.55 -57.08 -3.29)) (mypos -14.20 8.00 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.93 -51.47 -1.57) (pol 14.33 7.86 -2.51)) (L (pol 34.29 -31.69 -0.92) (pol 29.30 3.92 -1.10)) (L (pol 29.27 3.84 -1.35) (pol 2.38 60.08 -13.72)) (L (pol 34.28 -31.75 -1.00) (pol 20.82 -60.13 -1.69)) (L (pol 27.84 -10.41 -1.12) (pol 29.49 -22.00 -1.06)) (L (pol 27.87 -10.14 -1.30) (pol 29.66 -9.63 -0.89)) (L (pol 29.55 -22.00 -1.28) (pol 31.14 -20.77 -0.94)) (L (pol 18.07 -26.35 -1.77) (pol 17.22 -23.51 -2.01)) (L (pol 17.22 -23.33 -1.86) (pol 16.01 -22.45 -1.86)) (L (pol 16.04 -22.61 -1.65) (pol 14.89 -24.15 -2.32)) (L (pol 14.91 -24.22 -2.12) (pol 14.34 -28.62 -2.26)) (L (pol 14.29 -28.61 -2.22) (pol 14.61 -33.06 -2.23)) (L (pol 14.62 -33.11 -2.10) (pol 15.57 -36.06 -1.90)) (L (pol 15.60 -36.12 -2.10) (pol 16.81 -35.98 -2.02)) (L (pol 16.82 -36.20 -1.80) (pol 17.84 -33.83 -1.85)) (L (pol 17.81 -33.56 -1.79) (pol 18.30 -30.13 -1.73)) (L (pol 18.31 -30.05 -1.53) (pol 18.08 -26.41 -1.60)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) diff --git a/logs/2025-11-04_20.34.37__QSOHFZ/Gym_1.log b/logs/2025-11-04_20.34.37__QSOHFZ/Gym_1.log new file mode 100644 index 0000000..7d04b38 --- /dev/null +++ b/logs/2025-11-04_20.34.37__QSOHFZ/Gym_1.log @@ -0,0 +1,21 @@ +{Tue 20:34:37 Step:1} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:34:37 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 86, +Msg: (time (now 530.52))(GS (unum 1) (team left) (sl 0) (sr 0) (t 155.18) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:37 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 94, +Msg: (time (now 530.52))(GS (unum 1) (team left) (sl 0) (sr 0) (t 155.18) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:37 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 102, +Msg: (time (now 530.52))(GS (unum 1) (team left) (sl 0) (sr 0) (t 155.18) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:37 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 110, +Msg: (time (now 530.52))(GS (unum 1) (team left) (sl 0) (sr 0) (t 155.18) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:37 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 118, +Msg: (time (now 530.52))(GS (unum 1) (team left) (sl 0) (sr 0) (t 155.18) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:37 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 126, +Msg: (time (now 530.52))(GS (unum 1) (team left) (sl 0) (sr 0) (t 155.18) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:37 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 134, +Msg: (time (now 530.52))(GS (unum 1) (team left) (sl 0) (sr 0) (t 155.18) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:37 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 142, +Msg: (time (now 530.52))(GS (unum 1) (team left) (sl 0) (sr 0) (t 155.18) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:37 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 150, +Msg: (time (now 530.52))(GS (unum 1) (team left) (sl 0) (sr 0) (t 155.18) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) +{Tue 20:34:37 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 158, +Msg: (time (now 530.52))(GS (unum 1) (team left) (sl 0) (sr 0) (t 155.18) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax -0.00)) diff --git a/logs/2025-11-04_20.34.37__SXRRET/Gym_1.log b/logs/2025-11-04_20.34.37__SXRRET/Gym_1.log new file mode 100644 index 0000000..9db0151 --- /dev/null +++ b/logs/2025-11-04_20.34.37__SXRRET/Gym_1.log @@ -0,0 +1,41 @@ +{Tue 20:34:37 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 86, +Msg: (time (now 530.70))(GS (unum 1) (team left) (sl 0) (sr 0) (t 154.44) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.03 -18.27)) (llowerarm (pol 0.21 29.40 -18.28))) (G2R (pol 30.58 -17.21 0.35)) (G1R (pol 30.04 -13.46 0.28)) (F1R (pol 29.25 3.93 -1.31)) (F2R (pol 34.35 -31.62 -0.98)) (B (pol 9.56 -56.90 -3.26)) (mypos -14.20 8.00 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.96 -51.73 -1.45) (pol 14.36 8.14 -2.13)) (L (pol 34.24 -31.89 -0.95) (pol 29.23 3.87 -0.97)) (L (pol 29.25 4.12 -1.09) (pol 2.38 59.90 -13.65)) (L (pol 34.29 -31.47 -0.95) (pol 20.79 -59.99 -1.52)) (L (pol 27.84 -10.43 -1.11) (pol 29.54 -21.82 -0.91)) (L (pol 27.85 -10.55 -1.21) (pol 29.65 -10.08 -1.12)) (L (pol 29.56 -21.98 -1.16) (pol 31.22 -20.66 -1.09)) (L (pol 18.09 -26.27 -1.89) (pol 17.22 -23.26 -1.70)) (L (pol 17.26 -23.31 -1.94) (pol 16.04 -22.36 -1.88)) (L (pol 16.03 -22.47 -2.06) (pol 14.89 -24.20 -2.01)) (L (pol 14.90 -24.17 -2.07) (pol 14.32 -28.21 -2.27)) (L (pol 14.32 -28.44 -2.27) (pol 14.59 -33.12 -2.30)) (L (pol 14.59 -33.28 -2.28) (pol 15.59 -36.21 -2.11)) (L (pol 15.61 -36.12 -1.97) (pol 16.79 -36.25 -1.96)) (L (pol 16.81 -35.98 -2.06) (pol 17.81 -33.46 -1.62)) (L (pol 17.85 -33.73 -1.68) (pol 18.28 -30.00 -1.77)) (L (pol 18.30 -30.10 -1.68) (pol 18.05 -26.21 -1.56)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:37 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 94, +Msg: (time (now 530.70))(GS (unum 1) (team left) (sl 0) (sr 0) (t 154.44) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.03 -18.27)) (llowerarm (pol 0.21 29.40 -18.28))) (G2R (pol 30.58 -17.21 0.35)) (G1R (pol 30.04 -13.46 0.28)) (F1R (pol 29.25 3.93 -1.31)) (F2R (pol 34.35 -31.62 -0.98)) (B (pol 9.56 -56.90 -3.26)) (mypos -14.20 8.00 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.96 -51.73 -1.45) (pol 14.36 8.14 -2.13)) (L (pol 34.24 -31.89 -0.95) (pol 29.23 3.87 -0.97)) (L (pol 29.25 4.12 -1.09) (pol 2.38 59.90 -13.65)) (L (pol 34.29 -31.47 -0.95) (pol 20.79 -59.99 -1.52)) (L (pol 27.84 -10.43 -1.11) (pol 29.54 -21.82 -0.91)) (L (pol 27.85 -10.55 -1.21) (pol 29.65 -10.08 -1.12)) (L (pol 29.56 -21.98 -1.16) (pol 31.22 -20.66 -1.09)) (L (pol 18.09 -26.27 -1.89) (pol 17.22 -23.26 -1.70)) (L (pol 17.26 -23.31 -1.94) (pol 16.04 -22.36 -1.88)) (L (pol 16.03 -22.47 -2.06) (pol 14.89 -24.20 -2.01)) (L (pol 14.90 -24.17 -2.07) (pol 14.32 -28.21 -2.27)) (L (pol 14.32 -28.44 -2.27) (pol 14.59 -33.12 -2.30)) (L (pol 14.59 -33.28 -2.28) (pol 15.59 -36.21 -2.11)) (L (pol 15.61 -36.12 -1.97) (pol 16.79 -36.25 -1.96)) (L (pol 16.81 -35.98 -2.06) (pol 17.81 -33.46 -1.62)) (L (pol 17.85 -33.73 -1.68) (pol 18.28 -30.00 -1.77)) (L (pol 18.30 -30.10 -1.68) (pol 18.05 -26.21 -1.56)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:37 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 102, +Msg: (time (now 530.70))(GS (unum 1) (team left) (sl 0) (sr 0) (t 154.44) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.03 -18.27)) (llowerarm (pol 0.21 29.40 -18.28))) (G2R (pol 30.58 -17.21 0.35)) (G1R (pol 30.04 -13.46 0.28)) (F1R (pol 29.25 3.93 -1.31)) (F2R (pol 34.35 -31.62 -0.98)) (B (pol 9.56 -56.90 -3.26)) (mypos -14.20 8.00 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.96 -51.73 -1.45) (pol 14.36 8.14 -2.13)) (L (pol 34.24 -31.89 -0.95) (pol 29.23 3.87 -0.97)) (L (pol 29.25 4.12 -1.09) (pol 2.38 59.90 -13.65)) (L (pol 34.29 -31.47 -0.95) (pol 20.79 -59.99 -1.52)) (L (pol 27.84 -10.43 -1.11) (pol 29.54 -21.82 -0.91)) (L (pol 27.85 -10.55 -1.21) (pol 29.65 -10.08 -1.12)) (L (pol 29.56 -21.98 -1.16) (pol 31.22 -20.66 -1.09)) (L (pol 18.09 -26.27 -1.89) (pol 17.22 -23.26 -1.70)) (L (pol 17.26 -23.31 -1.94) (pol 16.04 -22.36 -1.88)) (L (pol 16.03 -22.47 -2.06) (pol 14.89 -24.20 -2.01)) (L (pol 14.90 -24.17 -2.07) (pol 14.32 -28.21 -2.27)) (L (pol 14.32 -28.44 -2.27) (pol 14.59 -33.12 -2.30)) (L (pol 14.59 -33.28 -2.28) (pol 15.59 -36.21 -2.11)) (L (pol 15.61 -36.12 -1.97) (pol 16.79 -36.25 -1.96)) (L (pol 16.81 -35.98 -2.06) (pol 17.81 -33.46 -1.62)) (L (pol 17.85 -33.73 -1.68) (pol 18.28 -30.00 -1.77)) (L (pol 18.30 -30.10 -1.68) (pol 18.05 -26.21 -1.56)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:37 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 110, +Msg: (time (now 530.70))(GS (unum 1) (team left) (sl 0) (sr 0) (t 154.44) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.03 -18.27)) (llowerarm (pol 0.21 29.40 -18.28))) (G2R (pol 30.58 -17.21 0.35)) (G1R (pol 30.04 -13.46 0.28)) (F1R (pol 29.25 3.93 -1.31)) (F2R (pol 34.35 -31.62 -0.98)) (B (pol 9.56 -56.90 -3.26)) (mypos -14.20 8.00 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.96 -51.73 -1.45) (pol 14.36 8.14 -2.13)) (L (pol 34.24 -31.89 -0.95) (pol 29.23 3.87 -0.97)) (L (pol 29.25 4.12 -1.09) (pol 2.38 59.90 -13.65)) (L (pol 34.29 -31.47 -0.95) (pol 20.79 -59.99 -1.52)) (L (pol 27.84 -10.43 -1.11) (pol 29.54 -21.82 -0.91)) (L (pol 27.85 -10.55 -1.21) (pol 29.65 -10.08 -1.12)) (L (pol 29.56 -21.98 -1.16) (pol 31.22 -20.66 -1.09)) (L (pol 18.09 -26.27 -1.89) (pol 17.22 -23.26 -1.70)) (L (pol 17.26 -23.31 -1.94) (pol 16.04 -22.36 -1.88)) (L (pol 16.03 -22.47 -2.06) (pol 14.89 -24.20 -2.01)) (L (pol 14.90 -24.17 -2.07) (pol 14.32 -28.21 -2.27)) (L (pol 14.32 -28.44 -2.27) (pol 14.59 -33.12 -2.30)) (L (pol 14.59 -33.28 -2.28) (pol 15.59 -36.21 -2.11)) (L (pol 15.61 -36.12 -1.97) (pol 16.79 -36.25 -1.96)) (L (pol 16.81 -35.98 -2.06) (pol 17.81 -33.46 -1.62)) (L (pol 17.85 -33.73 -1.68) (pol 18.28 -30.00 -1.77)) (L (pol 18.30 -30.10 -1.68) (pol 18.05 -26.21 -1.56)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:37 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 118, +Msg: (time (now 530.70))(GS (unum 1) (team left) (sl 0) (sr 0) (t 154.44) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.03 -18.27)) (llowerarm (pol 0.21 29.40 -18.28))) (G2R (pol 30.58 -17.21 0.35)) (G1R (pol 30.04 -13.46 0.28)) (F1R (pol 29.25 3.93 -1.31)) (F2R (pol 34.35 -31.62 -0.98)) (B (pol 9.56 -56.90 -3.26)) (mypos -14.20 8.00 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.96 -51.73 -1.45) (pol 14.36 8.14 -2.13)) (L (pol 34.24 -31.89 -0.95) (pol 29.23 3.87 -0.97)) (L (pol 29.25 4.12 -1.09) (pol 2.38 59.90 -13.65)) (L (pol 34.29 -31.47 -0.95) (pol 20.79 -59.99 -1.52)) (L (pol 27.84 -10.43 -1.11) (pol 29.54 -21.82 -0.91)) (L (pol 27.85 -10.55 -1.21) (pol 29.65 -10.08 -1.12)) (L (pol 29.56 -21.98 -1.16) (pol 31.22 -20.66 -1.09)) (L (pol 18.09 -26.27 -1.89) (pol 17.22 -23.26 -1.70)) (L (pol 17.26 -23.31 -1.94) (pol 16.04 -22.36 -1.88)) (L (pol 16.03 -22.47 -2.06) (pol 14.89 -24.20 -2.01)) (L (pol 14.90 -24.17 -2.07) (pol 14.32 -28.21 -2.27)) (L (pol 14.32 -28.44 -2.27) (pol 14.59 -33.12 -2.30)) (L (pol 14.59 -33.28 -2.28) (pol 15.59 -36.21 -2.11)) (L (pol 15.61 -36.12 -1.97) (pol 16.79 -36.25 -1.96)) (L (pol 16.81 -35.98 -2.06) (pol 17.81 -33.46 -1.62)) (L (pol 17.85 -33.73 -1.68) (pol 18.28 -30.00 -1.77)) (L (pol 18.30 -30.10 -1.68) (pol 18.05 -26.21 -1.56)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:37 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 126, +Msg: (time (now 530.70))(GS (unum 1) (team left) (sl 0) (sr 0) (t 154.44) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.03 -18.27)) (llowerarm (pol 0.21 29.40 -18.28))) (G2R (pol 30.58 -17.21 0.35)) (G1R (pol 30.04 -13.46 0.28)) (F1R (pol 29.25 3.93 -1.31)) (F2R (pol 34.35 -31.62 -0.98)) (B (pol 9.56 -56.90 -3.26)) (mypos -14.20 8.00 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.96 -51.73 -1.45) (pol 14.36 8.14 -2.13)) (L (pol 34.24 -31.89 -0.95) (pol 29.23 3.87 -0.97)) (L (pol 29.25 4.12 -1.09) (pol 2.38 59.90 -13.65)) (L (pol 34.29 -31.47 -0.95) (pol 20.79 -59.99 -1.52)) (L (pol 27.84 -10.43 -1.11) (pol 29.54 -21.82 -0.91)) (L (pol 27.85 -10.55 -1.21) (pol 29.65 -10.08 -1.12)) (L (pol 29.56 -21.98 -1.16) (pol 31.22 -20.66 -1.09)) (L (pol 18.09 -26.27 -1.89) (pol 17.22 -23.26 -1.70)) (L (pol 17.26 -23.31 -1.94) (pol 16.04 -22.36 -1.88)) (L (pol 16.03 -22.47 -2.06) (pol 14.89 -24.20 -2.01)) (L (pol 14.90 -24.17 -2.07) (pol 14.32 -28.21 -2.27)) (L (pol 14.32 -28.44 -2.27) (pol 14.59 -33.12 -2.30)) (L (pol 14.59 -33.28 -2.28) (pol 15.59 -36.21 -2.11)) (L (pol 15.61 -36.12 -1.97) (pol 16.79 -36.25 -1.96)) (L (pol 16.81 -35.98 -2.06) (pol 17.81 -33.46 -1.62)) (L (pol 17.85 -33.73 -1.68) (pol 18.28 -30.00 -1.77)) (L (pol 18.30 -30.10 -1.68) (pol 18.05 -26.21 -1.56)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:37 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 134, +Msg: (time (now 530.70))(GS (unum 1) (team left) (sl 0) (sr 0) (t 154.44) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.03 -18.27)) (llowerarm (pol 0.21 29.40 -18.28))) (G2R (pol 30.58 -17.21 0.35)) (G1R (pol 30.04 -13.46 0.28)) (F1R (pol 29.25 3.93 -1.31)) (F2R (pol 34.35 -31.62 -0.98)) (B (pol 9.56 -56.90 -3.26)) (mypos -14.20 8.00 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.96 -51.73 -1.45) (pol 14.36 8.14 -2.13)) (L (pol 34.24 -31.89 -0.95) (pol 29.23 3.87 -0.97)) (L (pol 29.25 4.12 -1.09) (pol 2.38 59.90 -13.65)) (L (pol 34.29 -31.47 -0.95) (pol 20.79 -59.99 -1.52)) (L (pol 27.84 -10.43 -1.11) (pol 29.54 -21.82 -0.91)) (L (pol 27.85 -10.55 -1.21) (pol 29.65 -10.08 -1.12)) (L (pol 29.56 -21.98 -1.16) (pol 31.22 -20.66 -1.09)) (L (pol 18.09 -26.27 -1.89) (pol 17.22 -23.26 -1.70)) (L (pol 17.26 -23.31 -1.94) (pol 16.04 -22.36 -1.88)) (L (pol 16.03 -22.47 -2.06) (pol 14.89 -24.20 -2.01)) (L (pol 14.90 -24.17 -2.07) (pol 14.32 -28.21 -2.27)) (L (pol 14.32 -28.44 -2.27) (pol 14.59 -33.12 -2.30)) (L (pol 14.59 -33.28 -2.28) (pol 15.59 -36.21 -2.11)) (L (pol 15.61 -36.12 -1.97) (pol 16.79 -36.25 -1.96)) (L (pol 16.81 -35.98 -2.06) (pol 17.81 -33.46 -1.62)) (L (pol 17.85 -33.73 -1.68) (pol 18.28 -30.00 -1.77)) (L (pol 18.30 -30.10 -1.68) (pol 18.05 -26.21 -1.56)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:37 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 142, +Msg: (time (now 530.70))(GS (unum 1) (team left) (sl 0) (sr 0) (t 154.44) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.03 -18.27)) (llowerarm (pol 0.21 29.40 -18.28))) (G2R (pol 30.58 -17.21 0.35)) (G1R (pol 30.04 -13.46 0.28)) (F1R (pol 29.25 3.93 -1.31)) (F2R (pol 34.35 -31.62 -0.98)) (B (pol 9.56 -56.90 -3.26)) (mypos -14.20 8.00 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.96 -51.73 -1.45) (pol 14.36 8.14 -2.13)) (L (pol 34.24 -31.89 -0.95) (pol 29.23 3.87 -0.97)) (L (pol 29.25 4.12 -1.09) (pol 2.38 59.90 -13.65)) (L (pol 34.29 -31.47 -0.95) (pol 20.79 -59.99 -1.52)) (L (pol 27.84 -10.43 -1.11) (pol 29.54 -21.82 -0.91)) (L (pol 27.85 -10.55 -1.21) (pol 29.65 -10.08 -1.12)) (L (pol 29.56 -21.98 -1.16) (pol 31.22 -20.66 -1.09)) (L (pol 18.09 -26.27 -1.89) (pol 17.22 -23.26 -1.70)) (L (pol 17.26 -23.31 -1.94) (pol 16.04 -22.36 -1.88)) (L (pol 16.03 -22.47 -2.06) (pol 14.89 -24.20 -2.01)) (L (pol 14.90 -24.17 -2.07) (pol 14.32 -28.21 -2.27)) (L (pol 14.32 -28.44 -2.27) (pol 14.59 -33.12 -2.30)) (L (pol 14.59 -33.28 -2.28) (pol 15.59 -36.21 -2.11)) (L (pol 15.61 -36.12 -1.97) (pol 16.79 -36.25 -1.96)) (L (pol 16.81 -35.98 -2.06) (pol 17.81 -33.46 -1.62)) (L (pol 17.85 -33.73 -1.68) (pol 18.28 -30.00 -1.77)) (L (pol 18.30 -30.10 -1.68) (pol 18.05 -26.21 -1.56)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:37 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 150, +Msg: (time (now 530.70))(GS (unum 1) (team left) (sl 0) (sr 0) (t 154.44) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.03 -18.27)) (llowerarm (pol 0.21 29.40 -18.28))) (G2R (pol 30.58 -17.21 0.35)) (G1R (pol 30.04 -13.46 0.28)) (F1R (pol 29.25 3.93 -1.31)) (F2R (pol 34.35 -31.62 -0.98)) (B (pol 9.56 -56.90 -3.26)) (mypos -14.20 8.00 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.96 -51.73 -1.45) (pol 14.36 8.14 -2.13)) (L (pol 34.24 -31.89 -0.95) (pol 29.23 3.87 -0.97)) (L (pol 29.25 4.12 -1.09) (pol 2.38 59.90 -13.65)) (L (pol 34.29 -31.47 -0.95) (pol 20.79 -59.99 -1.52)) (L (pol 27.84 -10.43 -1.11) (pol 29.54 -21.82 -0.91)) (L (pol 27.85 -10.55 -1.21) (pol 29.65 -10.08 -1.12)) (L (pol 29.56 -21.98 -1.16) (pol 31.22 -20.66 -1.09)) (L (pol 18.09 -26.27 -1.89) (pol 17.22 -23.26 -1.70)) (L (pol 17.26 -23.31 -1.94) (pol 16.04 -22.36 -1.88)) (L (pol 16.03 -22.47 -2.06) (pol 14.89 -24.20 -2.01)) (L (pol 14.90 -24.17 -2.07) (pol 14.32 -28.21 -2.27)) (L (pol 14.32 -28.44 -2.27) (pol 14.59 -33.12 -2.30)) (L (pol 14.59 -33.28 -2.28) (pol 15.59 -36.21 -2.11)) (L (pol 15.61 -36.12 -1.97) (pol 16.79 -36.25 -1.96)) (L (pol 16.81 -35.98 -2.06) (pol 17.81 -33.46 -1.62)) (L (pol 17.85 -33.73 -1.68) (pol 18.28 -30.00 -1.77)) (L (pol 18.30 -30.10 -1.68) (pol 18.05 -26.21 -1.56)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:37 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 158, +Msg: (time (now 530.70))(GS (unum 1) (team left) (sl 0) (sr 0) (t 154.44) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.03 -18.27)) (llowerarm (pol 0.21 29.40 -18.28))) (G2R (pol 30.58 -17.21 0.35)) (G1R (pol 30.04 -13.46 0.28)) (F1R (pol 29.25 3.93 -1.31)) (F2R (pol 34.35 -31.62 -0.98)) (B (pol 9.56 -56.90 -3.26)) (mypos -14.20 8.00 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.96 -51.73 -1.45) (pol 14.36 8.14 -2.13)) (L (pol 34.24 -31.89 -0.95) (pol 29.23 3.87 -0.97)) (L (pol 29.25 4.12 -1.09) (pol 2.38 59.90 -13.65)) (L (pol 34.29 -31.47 -0.95) (pol 20.79 -59.99 -1.52)) (L (pol 27.84 -10.43 -1.11) (pol 29.54 -21.82 -0.91)) (L (pol 27.85 -10.55 -1.21) (pol 29.65 -10.08 -1.12)) (L (pol 29.56 -21.98 -1.16) (pol 31.22 -20.66 -1.09)) (L (pol 18.09 -26.27 -1.89) (pol 17.22 -23.26 -1.70)) (L (pol 17.26 -23.31 -1.94) (pol 16.04 -22.36 -1.88)) (L (pol 16.03 -22.47 -2.06) (pol 14.89 -24.20 -2.01)) (L (pol 14.90 -24.17 -2.07) (pol 14.32 -28.21 -2.27)) (L (pol 14.32 -28.44 -2.27) (pol 14.59 -33.12 -2.30)) (L (pol 14.59 -33.28 -2.28) (pol 15.59 -36.21 -2.11)) (L (pol 15.61 -36.12 -1.97) (pol 16.79 -36.25 -1.96)) (L (pol 16.81 -35.98 -2.06) (pol 17.81 -33.46 -1.62)) (L (pol 17.85 -33.73 -1.68) (pol 18.28 -30.00 -1.77)) (L (pol 18.30 -30.10 -1.68) (pol 18.05 -26.21 -1.56)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:37 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 166, +Msg: (time (now 530.70))(GS (unum 1) (team left) (sl 0) (sr 0) (t 154.44) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.03 -18.27)) (llowerarm (pol 0.21 29.40 -18.28))) (G2R (pol 30.58 -17.21 0.35)) (G1R (pol 30.04 -13.46 0.28)) (F1R (pol 29.25 3.93 -1.31)) (F2R (pol 34.35 -31.62 -0.98)) (B (pol 9.56 -56.90 -3.26)) (mypos -14.20 8.00 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.96 -51.73 -1.45) (pol 14.36 8.14 -2.13)) (L (pol 34.24 -31.89 -0.95) (pol 29.23 3.87 -0.97)) (L (pol 29.25 4.12 -1.09) (pol 2.38 59.90 -13.65)) (L (pol 34.29 -31.47 -0.95) (pol 20.79 -59.99 -1.52)) (L (pol 27.84 -10.43 -1.11) (pol 29.54 -21.82 -0.91)) (L (pol 27.85 -10.55 -1.21) (pol 29.65 -10.08 -1.12)) (L (pol 29.56 -21.98 -1.16) (pol 31.22 -20.66 -1.09)) (L (pol 18.09 -26.27 -1.89) (pol 17.22 -23.26 -1.70)) (L (pol 17.26 -23.31 -1.94) (pol 16.04 -22.36 -1.88)) (L (pol 16.03 -22.47 -2.06) (pol 14.89 -24.20 -2.01)) (L (pol 14.90 -24.17 -2.07) (pol 14.32 -28.21 -2.27)) (L (pol 14.32 -28.44 -2.27) (pol 14.59 -33.12 -2.30)) (L (pol 14.59 -33.28 -2.28) (pol 15.59 -36.21 -2.11)) (L (pol 15.61 -36.12 -1.97) (pol 16.79 -36.25 -1.96)) (L (pol 16.81 -35.98 -2.06) (pol 17.81 -33.46 -1.62)) (L (pol 17.85 -33.73 -1.68) (pol 18.28 -30.00 -1.77)) (L (pol 18.30 -30.10 -1.68) (pol 18.05 -26.21 -1.56)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:37 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 174, +Msg: (time (now 530.70))(GS (unum 1) (team left) (sl 0) (sr 0) (t 154.44) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.03 -18.27)) (llowerarm (pol 0.21 29.40 -18.28))) (G2R (pol 30.58 -17.21 0.35)) (G1R (pol 30.04 -13.46 0.28)) (F1R (pol 29.25 3.93 -1.31)) (F2R (pol 34.35 -31.62 -0.98)) (B (pol 9.56 -56.90 -3.26)) (mypos -14.20 8.00 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.96 -51.73 -1.45) (pol 14.36 8.14 -2.13)) (L (pol 34.24 -31.89 -0.95) (pol 29.23 3.87 -0.97)) (L (pol 29.25 4.12 -1.09) (pol 2.38 59.90 -13.65)) (L (pol 34.29 -31.47 -0.95) (pol 20.79 -59.99 -1.52)) (L (pol 27.84 -10.43 -1.11) (pol 29.54 -21.82 -0.91)) (L (pol 27.85 -10.55 -1.21) (pol 29.65 -10.08 -1.12)) (L (pol 29.56 -21.98 -1.16) (pol 31.22 -20.66 -1.09)) (L (pol 18.09 -26.27 -1.89) (pol 17.22 -23.26 -1.70)) (L (pol 17.26 -23.31 -1.94) (pol 16.04 -22.36 -1.88)) (L (pol 16.03 -22.47 -2.06) (pol 14.89 -24.20 -2.01)) (L (pol 14.90 -24.17 -2.07) (pol 14.32 -28.21 -2.27)) (L (pol 14.32 -28.44 -2.27) (pol 14.59 -33.12 -2.30)) (L (pol 14.59 -33.28 -2.28) (pol 15.59 -36.21 -2.11)) (L (pol 15.61 -36.12 -1.97) (pol 16.79 -36.25 -1.96)) (L (pol 16.81 -35.98 -2.06) (pol 17.81 -33.46 -1.62)) (L (pol 17.85 -33.73 -1.68) (pol 18.28 -30.00 -1.77)) (L (pol 18.30 -30.10 -1.68) (pol 18.05 -26.21 -1.56)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:37 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 182, +Msg: (time (now 530.70))(GS (unum 1) (team left) (sl 0) (sr 0) (t 154.44) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 0.00 -0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.03 -18.27)) (llowerarm (pol 0.21 29.40 -18.28))) (G2R (pol 30.58 -17.21 0.35)) (G1R (pol 30.04 -13.46 0.28)) (F1R (pol 29.25 3.93 -1.31)) (F2R (pol 34.35 -31.62 -0.98)) (B (pol 9.56 -56.90 -3.26)) (mypos -14.20 8.00 0.56) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 22.96 -51.73 -1.45) (pol 14.36 8.14 -2.13)) (L (pol 34.24 -31.89 -0.95) (pol 29.23 3.87 -0.97)) (L (pol 29.25 4.12 -1.09) (pol 2.38 59.90 -13.65)) (L (pol 34.29 -31.47 -0.95) (pol 20.79 -59.99 -1.52)) (L (pol 27.84 -10.43 -1.11) (pol 29.54 -21.82 -0.91)) (L (pol 27.85 -10.55 -1.21) (pol 29.65 -10.08 -1.12)) (L (pol 29.56 -21.98 -1.16) (pol 31.22 -20.66 -1.09)) (L (pol 18.09 -26.27 -1.89) (pol 17.22 -23.26 -1.70)) (L (pol 17.26 -23.31 -1.94) (pol 16.04 -22.36 -1.88)) (L (pol 16.03 -22.47 -2.06) (pol 14.89 -24.20 -2.01)) (L (pol 14.90 -24.17 -2.07) (pol 14.32 -28.21 -2.27)) (L (pol 14.32 -28.44 -2.27) (pol 14.59 -33.12 -2.30)) (L (pol 14.59 -33.28 -2.28) (pol 15.59 -36.21 -2.11)) (L (pol 15.61 -36.12 -1.97) (pol 16.79 -36.25 -1.96)) (L (pol 16.81 -35.98 -2.06) (pol 17.81 -33.46 -1.62)) (L (pol 17.85 -33.73 -1.68) (pol 18.28 -30.00 -1.77)) (L (pol 18.30 -30.10 -1.68) (pol 18.05 -26.21 -1.56)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:34:37 Step:3} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:34:37 Step:5} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:34:37 Step:5} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:34:37 Step:7} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:34:37 Step:7} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:34:37 Step:10} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:34:37 Step:11} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:34:37 Step:13} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:34:37 Step:15} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:34:37 Step:15} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:34:37 Step:17} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:34:37 Step:17} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:34:37 Step:19} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:34:37 Step:19} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:34:37 Step:22} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? diff --git a/logs/2025-11-04_20.34.42__VZTCZH/Gym_1.log b/logs/2025-11-04_20.34.42__VZTCZH/Gym_1.log new file mode 100644 index 0000000..2b796ad --- /dev/null +++ b/logs/2025-11-04_20.34.42__VZTCZH/Gym_1.log @@ -0,0 +1 @@ +{Tue 20:34:42 Step:3} Server_Comm.py: Received a new packet while on world.update()! diff --git a/logs/2025-11-04_20.36.18__ZIOHPA/Gym_1.log b/logs/2025-11-04_20.36.18__ZIOHPA/Gym_1.log new file mode 100644 index 0000000..317622b --- /dev/null +++ b/logs/2025-11-04_20.36.18__ZIOHPA/Gym_1.log @@ -0,0 +1,1991 @@ +{Tue 20:36:18 Step:1} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:18 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 86, +Msg: (time (now 632.55))(GS (unum 1) (team left) (sl 0) (sr 0) (t 256.70) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:18 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 94, +Msg: (time (now 632.55))(GS (unum 1) (team left) (sl 0) (sr 0) (t 256.70) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:18 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 102, +Msg: (time (now 632.55))(GS (unum 1) (team left) (sl 0) (sr 0) (t 256.70) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:18 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 110, +Msg: (time (now 632.55))(GS (unum 1) (team left) (sl 0) (sr 0) (t 256.70) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:18 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 118, +Msg: (time (now 632.55))(GS (unum 1) (team left) (sl 0) (sr 0) (t 256.70) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:18 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 126, +Msg: (time (now 632.55))(GS (unum 1) (team left) (sl 0) (sr 0) (t 256.70) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:18 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 134, +Msg: (time (now 632.55))(GS (unum 1) (team left) (sl 0) (sr 0) (t 256.70) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:18 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 142, +Msg: (time (now 632.55))(GS (unum 1) (team left) (sl 0) (sr 0) (t 256.70) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:18 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 150, +Msg: (time (now 632.55))(GS (unum 1) (team left) (sl 0) (sr 0) (t 256.70) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:18 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 158, +Msg: (time (now 632.55))(GS (unum 1) (team left) (sl 0) (sr 0) (t 256.70) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:18 Step:5} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:18 Step:8} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:18 Step:8} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:18 Step:9} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:18 Step:11} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:18 Step:11} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:18 Step:14} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:19 Step:14} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:19 Step:15} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:19 Step:17} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:19 Step:17} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:19 Step:20} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:19 Step:20} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:19 Step:21} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:19 Step:24} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:19 Step:25} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:19 Step:28} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:19 Step:28} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:19 Step:29} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:19 Step:32} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:19 Step:32} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:19 Step:33} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:19 Step:35} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:19 Step:35} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:19 Step:39} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:19 Step:39} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:19 Step:43} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:19 Step:43} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:19 Step:47} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:19 Step:47} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:19 Step:49} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:19 Step:49} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:19 Step:52} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:32 Step:52} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:32 Step:682} Server_Comm.py: The agent lost 629 consecutive packets! Is syncmode disabled? +{Tue 20:36:32 Step:683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:687} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:32 Step:687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:689} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:691} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:32 Step:691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:693} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:32 Step:693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:695} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:697} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:700} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:704} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:708} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:711} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:711} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:714} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:719} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:721} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:721} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:724} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:725} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:727} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:731} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:731} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:733} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:733} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:735} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:739} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:739} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:742} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:745} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:747} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:749} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:751} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:753} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:753} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:755} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:758} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:761} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:764} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:771} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:774} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:777} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:779} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:779} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:781} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:783} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:786} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:791} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:793} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:795} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:795} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:797} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:797} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:801} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:801} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:805} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:808} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:809} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:813} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:816} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:820} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:821} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:823} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:823} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:826} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:830} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:831} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:835} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:36 Step:835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:837} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:36 Step:837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:841} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:841} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:843} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:36 Step:843} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:846} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:850} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:853} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:36 Step:853} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:858} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:859} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:861} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:36 Step:861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:864} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:865} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:867} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:36 Step:867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:870} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:873} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:36 Step:873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:878} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:879} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:882} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:882} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:883} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:885} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:885} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:888} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:889} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:891} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:895} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:898} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:902} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:905} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:907} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:911} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:919} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:922} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:925} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:973} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:974} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:975} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:977} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:977} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:980} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:39 Step:981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:983} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:986} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:39 Step:987} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:989} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:993} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:39 Step:993} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:996} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:39 Step:1003} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:1005} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:1005} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:1007} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:40 Step:1063} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:1065} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:1067} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:1067} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:1070} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:41 Step:1073} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:1075} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:1075} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:1077} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:1077} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:1080} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:41 Step:1081} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:1084} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:41 Step:1085} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:1087} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:1087} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:1091} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:41 Step:1091} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:1094} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:41 Step:1101} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:1103} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:1103} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:1106} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:41 Step:1107} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:1109} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:1109} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:1113} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:1113} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:1116} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:1153} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:1155} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:1156} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1157} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1159} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:1159} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1161} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:1161} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1163} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:1163} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1165} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:1165} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1168} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:43 Step:1169} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:43 Step:1171} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1173} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:1173} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1181} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1184} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:43 Step:1185} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1188} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:43 Step:1189} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1191} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:1193} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1195} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1196} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1203} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1206} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1207} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1209} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1209} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1212} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1212} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:44 Step:1213} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1215} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1215} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1217} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1219} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 656.88))(GS (sl 0) (sr 0) (t 280.98) (pm PlayOn))(foul 7)(GYR (n torso) (rt -143.98 -125.27 -410.53))(ACC (n torso) (a -14.25 -10.99 19.89))(HJ (n hj1) (ax -112.15))(HJ (n hj2) (ax -42.21))(See (P (team Gym) (id 1) (rlowerarm (pol 0.25 1.66 -28.04)) (llowerarm (pol 0.24 -20.82 -58.41)) (rfoot (pol 0.37 29.77 -30.45))) (F2R (pol 27.97 37.05 46.66)) (B (pol 2.02 45.18 34.92)) (mypos -10.94 0.44 0.41) (myorien -62.24) (ballpos -9.00 0.00 0.04) (L (pol 15.12 5.02 46.69) (pol 10.97 60.26 38.93)) (L (pol 27.97 37.49 46.68) (pol 26.02 60.43 40.02)) (L (pol 27.98 37.01 46.85) (pol 11.14 -59.97 8.61)) (L (pol 24.20 60.13 40.06) (pol 24.39 55.36 41.79)) (L (pol 24.35 55.35 41.72) (pol 26.19 55.96 41.91)) (L (pol 8.98 60.06 38.08) (pol 9.48 52.04 41.07)) (L (pol 9.46 52.67 41.27) (pol 10.58 48.93 42.76)) (L (pol 10.59 48.88 42.68) (pol 11.78 50.74 42.05)) (L (pol 11.79 50.84 42.65) (pol 12.65 55.45 40.65)) (L (pol 12.67 55.51 40.78) (pol 12.85 60.30 39.03)))(HJ (n raj1) (ax -124.25))(HJ (n raj2) (ax 0.83))(HJ (n raj3) (ax 69.23))(HJ (n raj4) (ax 83.57))(HJ (n laj1) (ax -124.27))(HJ (n laj2) (ax -7.18))(HJ (n laj3) (ax -69.18))(HJ (n laj4) (ax -83.56))(HJ (n rlj1) (ax 6.15))(HJ (n rlj2) (ax -49.08))(HJ (n rlj3) (ax 97.63))(HJ (n rlj4) (ax -126.38))(HJ (n rlj5) (ax 63.83))(FRP (n rf) (c -0.05 -0.08 -0.00) (f 146.57 51.38 207.49))(HJ (n rlj6) (ax -31.25))(HJ (n llj1) (ax 5.08))(HJ (n llj2) (ax 21.58))(HJ (n llj3) (ax 96.63))(HJ (n llj4) (ax -131.52))(HJ (n llj5) (ax 75.47))(FRP (n lf) (c 0.05 -0.08 0.00) (f 38.12 42.88 41.77))(HJ (n llj6) (ax 30.01)) +{Tue 20:36:44 Step:1220} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1221} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1223} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1223} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1226} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1227} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1228} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:44 Step:1229} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1231} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1231} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1232} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 657.14))(GS (sl 0) (sr 0) (t 281.24) (pm PlayOn))(foul 7)(GYR (n torso) (rt -26.77 48.18 172.25))(ACC (n torso) (a 10.18 4.87 12.51))(HJ (n hj1) (ax -119.23))(HJ (n hj2) (ax -35.26))(HJ (n raj1) (ax -117.51))(HJ (n raj2) (ax -7.00))(HJ (n raj3) (ax 72.40))(HJ (n raj4) (ax 76.69))(HJ (n laj1) (ax -117.52))(HJ (n laj2) (ax -0.42))(HJ (n laj3) (ax -65.40))(HJ (n laj4) (ax -83.61))(HJ (n rlj1) (ax -0.79))(HJ (n rlj2) (ax -44.96))(HJ (n rlj3) (ax 20.67))(HJ (n rlj4) (ax -129.35))(HJ (n rlj5) (ax 70.85))(HJ (n rlj6) (ax -24.54))(HJ (n llj1) (ax -2.00))(HJ (n llj2) (ax 31.37))(HJ (n llj3) (ax 96.69))(HJ (n llj4) (ax -124.82))(HJ (n llj5) (ax 70.70))(FRP (n lf) (c 0.04 -0.09 -0.01) (f -81.90 45.46 111.32))(HJ (n llj6) (ax 23.81)) +{Tue 20:36:44 Step:1234} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1237} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1240} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1241} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1243} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1243} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1245} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1245} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1247} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1250} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:45 Step:1251} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1253} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1256} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:45 Step:1259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1261} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1264} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:45 Step:1267} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:46 Step:1297} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1299} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1299} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1304} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:36:46 Step:1305} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1309} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1357} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1360} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1361} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1364} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1365} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1368} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1369} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1372} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 659.94))(GS (sl 0) (sr 0) (t 284.04) (pm PlayOn))(foul 7)(GYR (n torso) (rt 169.28 -112.32 -81.44))(ACC (n torso) (a -2.99 2.23 -7.29))(HJ (n hj1) (ax -21.04))(HJ (n hj2) (ax -20.89))(HJ (n raj1) (ax -64.98))(HJ (n raj2) (ax -7.75))(HJ (n raj3) (ax 73.55))(HJ (n raj4) (ax 5.45))(HJ (n laj1) (ax -64.98))(HJ (n laj2) (ax -0.99))(HJ (n laj3) (ax -73.89))(HJ (n laj4) (ax -5.45))(HJ (n rlj1) (ax -9.63))(HJ (n rlj2) (ax -42.51))(HJ (n rlj3) (ax 74.94))(HJ (n rlj4) (ax -108.43))(HJ (n rlj5) (ax 48.96))(HJ (n rlj6) (ax 45.00))(HJ (n llj1) (ax -10.28))(HJ (n llj2) (ax 44.64))(HJ (n llj3) (ax 97.59))(HJ (n llj4) (ax -108.68))(HJ (n llj5) (ax 51.34))(HJ (n llj6) (ax -45.00)) +{Tue 20:36:47 Step:1373} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1373} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1375} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1375} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1377} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1377} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1381} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:48 Step:1381} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1384} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:48 Step:1385} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1387} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1387} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1389} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1389} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1391} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1481} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1483} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1483} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1485} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1487} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1487} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1489} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1495} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1497} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1499} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1501} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1505} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1507} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1507} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1509} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1512} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:50 Step:1512} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1516} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:51 Step:1517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1520} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:51 Step:1521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1524} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:51 Step:1533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1535} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1571} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1573} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1575} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1577} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1579} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1581} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1583} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1583} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1586} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:52 Step:1587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1588} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1593} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:52 Step:1593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1595} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1599} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:52 Step:1599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1601} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1601} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1603} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1607} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1607} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1609} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1613} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1615} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1618} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1621} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1624} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1629} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1631} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1631} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1635} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:54 Step:1657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1659} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1662} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 665.75))(GS (sl 0) (sr 0) (t 289.84) (pm PlayOn))(foul 7)(GYR (n torso) (rt -45.22 -95.52 258.24))(ACC (n torso) (a -19.71 -26.15 -14.28))(HJ (n hj1) (ax -56.15))(HJ (n hj2) (ax -41.93))(HJ (n raj1) (ax -105.52))(HJ (n raj2) (ax -1.33))(HJ (n raj3) (ax 109.76))(HJ (n raj4) (ax 70.04))(HJ (n laj1) (ax -79.56))(HJ (n laj2) (ax 5.93))(HJ (n laj3) (ax -109.65))(HJ (n laj4) (ax -70.03))(HJ (n rlj1) (ax -3.09))(HJ (n rlj2) (ax 22.45))(HJ (n rlj3) (ax 40.53))(HJ (n rlj4) (ax -105.08))(HJ (n rlj5) (ax 62.87))(HJ (n rlj6) (ax 7.46))(HJ (n llj1) (ax -13.72))(HJ (n llj2) (ax -25.45))(HJ (n llj3) (ax 27.88))(HJ (n llj4) (ax -95.38))(HJ (n llj5) (ax 58.15))(HJ (n llj6) (ax 12.59)) +{Tue 20:36:54 Step:1662} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:54 Step:1663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1665} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1665} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1667} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1669} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1671} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1673} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1676} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:54 Step:1677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1679} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1681} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1683} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1686} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:54 Step:1687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1689} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1689} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1692} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1695} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1698} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1699} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1701} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1704} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1707} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1710} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1717} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1719} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1721} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:56 Step:1755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1757} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:56 Step:1757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1760} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:56 Step:1761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1763} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:56 Step:1763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1765} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:56 Step:1765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1768} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:58 Step:1861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1863} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1866} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:58 Step:1869} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1871} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1881} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1883} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1883} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1887} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:59 Step:1889} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1891} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1894} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:59 Step:1895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1897} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1903} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1906} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:59 Step:1907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1909} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1913} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1915} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1917} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1919} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1923} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1925} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1925} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1927} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1929} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1929} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1931} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1931} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1933} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1939} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1941} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1943} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1943} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1946} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:00 Step:1951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1953} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1953} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1956} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:00 Step:1957} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1959} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1959} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:01 Step:1995} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1997} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:01 Step:1997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:2000} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:01 Step:2001} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:2004} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:02 Step:2005} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:2007} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:02 Step:2019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:2021} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:02 Step:2021} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:2024} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:02 Step:2025} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:2028} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:02 Step:2029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:2031} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:02 Step:2031} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:2034} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:02 Step:2035} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:2037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:2042} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:2043} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:2049} Server_Comm.py: The agent lost 5 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:2049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:2053} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:2053} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:2056} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:2057} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:2059} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:03 Step:2059} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:2062} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:2063} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:2065} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:03 Step:2065} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:2067} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 673.86))(GS (sl 0) (sr 0) (t 297.93) (pm PlayOn))(foul 7)(GYR (n torso) (rt 363.89 63.98 187.88))(ACC (n torso) (a 7.31 -3.13 8.35))(HJ (n hj1) (ax 126.30))(HJ (n hj2) (ax -30.61))(See (P (team Gym) (id 1) (llowerarm (pol 0.24 -28.96 -45.31))) (F1R (pol 27.25 -43.27 52.95)) (mypos -10.51 0.29 0.42) (myorien 69.16) (ballpos -9.00 0.00 0.04) (L (pol 11.25 -42.86 51.81) (pol 14.30 -6.31 53.03)) (L (pol 23.99 -38.11 53.62) (pol 10.55 60.39 7.25)))(HJ (n raj1) (ax -101.84))(HJ (n raj2) (ax 1.93))(HJ (n raj3) (ax 80.85))(HJ (n raj4) (ax 94.53))(HJ (n laj1) (ax -101.45))(HJ (n laj2) (ax -2.28))(HJ (n laj3) (ax -82.10))(HJ (n laj4) (ax -94.36))(HJ (n rlj1) (ax -30.80))(HJ (n rlj2) (ax 29.07))(HJ (n rlj3) (ax 28.39))(HJ (n rlj4) (ax -107.76))(HJ (n rlj5) (ax 60.74))(HJ (n rlj6) (ax 5.32))(HJ (n llj1) (ax -13.66))(HJ (n llj2) (ax -30.56))(HJ (n llj3) (ax 41.67))(HJ (n llj4) (ax -102.90))(HJ (n llj5) (ax 76.66))(FRP (n lf) (c -0.05 -0.08 -0.01) (f -15.79 55.99 5.25))(HJ (n llj6) (ax 1.01)) +{Tue 20:37:03 Step:2068} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:2069} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:2071} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:03 Step:2071} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:2073} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:03 Step:2073} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:2076} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:2079} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:2081} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:03 Step:2081} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:2099} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:2101} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:2101} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:2104} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:04 Step:2105} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:2107} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:2107} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:2109} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:2109} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:2112} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:04 Step:2113} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:2115} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:2115} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:2117} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:2117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:2119} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:2119} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:2121} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:2121} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:2123} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:2123} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:2125} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:2125} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:2127} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:2127} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:2130} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:04 Step:2131} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:2133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:2136} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:2137} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2139} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2139} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2142} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:2173} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2175} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2175} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2177} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2177} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2179} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2180} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2181} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2183} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2183} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2185} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2185} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2187} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2187} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2189} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2197} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2255} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2255} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2263} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2263} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2265} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2267} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2267} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2269} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2269} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2271} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2271} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2274} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2277} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2280} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2281} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2283} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:08 Step:2283} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2285} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:08 Step:2285} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2287} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:08 Step:2287} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2289} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:08 Step:2289} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2291} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:08 Step:2291} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2294} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2305} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2307} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:08 Step:2307} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2309} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:08 Step:2309} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2311} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2355} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2357} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2357} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2359} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2359} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2361} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2361} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2365} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2367} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2367} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2370} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2374} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2375} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2377} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:10 Step:2377} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2380} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2383} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2386} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2387} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2391} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2391} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2395} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2395} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2398} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2398} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:10 Step:2399} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2402} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2405} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2407} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:10 Step:2407} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2409} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2411} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:10 Step:2411} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2414} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2415} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2417} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2461} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:11 Step:2463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2466} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2469} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2473} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2476} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:12 Step:2479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2481} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2484} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:12 Step:2485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2487} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2487} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2491} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:12 Step:2491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2493} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2496} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:13 Step:2547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2549} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:13 Step:2549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2552} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:13 Step:2555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2557} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:13 Step:2565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2568} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2576} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2582} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2583} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2586} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2590} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2595} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2598} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:15 Step:2641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2643} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:15 Step:2643} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2645} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:15 Step:2645} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2647} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:15 Step:2647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2651} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:15 Step:2651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2653} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:15 Step:2653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2656} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:15 Step:2659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2661} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:15 Step:2661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2663} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:15 Step:2663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2665} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2665} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2667} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2670} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:16 Step:2687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2689} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2689} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2692} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2739} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2741} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:17 Step:2741} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2744} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2748} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2752} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2765} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:18 Step:2765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2769} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2772} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2773} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2775} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:18 Step:2775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2779} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2779} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2781} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:18 Step:2781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2784} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2788} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2791} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:18 Step:2791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2794} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2795} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2797} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:18 Step:2797} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2800} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2801} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2804} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2804} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:18 Step:2805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2808} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2809} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2811} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2814} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2818} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2822} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2825} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2827} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2829} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2829} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2833} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2835} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2838} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2842} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2842} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:19 Step:2843} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2846} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2849} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2849} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2853} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2855} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2855} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2858} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2865} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2868} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2900} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2903} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2906} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:21 Step:2907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2909} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:21 Step:2909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2914} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:21 Step:2915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2918} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:21 Step:2919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2921} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:21 Step:2921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2923} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:21 Step:2923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2925} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:21 Step:2925} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2928} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:21 Step:2931} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2933} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:21 Step:2933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2935} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:21 Step:2935} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2937} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:21 Step:2949} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2950} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2953} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2955} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2955} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2957} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2957} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2960} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:3011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:3013} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:3013} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:3016} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:3017} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:3019} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:3019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:3021} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:3021} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:3024} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:3025} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:3027} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:3027} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:3030} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:3031} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:3033} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:3033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:3036} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:3037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:3039} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:3039} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:3042} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:3043} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:3045} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:3045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:3047} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:3047} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:3049} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:3049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:3051} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:24 Step:3059} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:3061} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:24 Step:3061} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:3063} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:24 Step:3063} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:25 Step:3115} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:3117} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:3117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:3120} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:3120} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:25 Step:3121} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:3123} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:3123} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:3126} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:3127} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:3129} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:3129} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:3132} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:3133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:3135} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:3135} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:3137} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:3137} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:3140} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:26 Step:3141} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3143} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:3143} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3146} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:26 Step:3146} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:26 Step:3147} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3149} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:3149} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3152} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:26 Step:3153} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3156} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:26 Step:3157} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3159} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:3159} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3161} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:3161} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3163} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:3163} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3165} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:3165} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3167} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:3167} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:26 Step:3173} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:26 Step:3175} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:3181} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3183} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3185} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3213} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3215} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3215} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3217} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3219} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3223} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3225} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3228} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:28 Step:3229} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3231} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3231} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3233} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3235} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3235} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3238} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:28 Step:3241} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3244} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:28 Step:3245} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3247} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3249} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3249} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3251} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3251} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3253} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3259} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3263} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3263} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3265} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3265} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3268} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:28 Step:3269} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3271} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3271} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3275} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:28 Step:3275} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3277} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3277} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3281} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:29 Step:3281} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3283} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3283} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3286} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:29 Step:3289} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3291} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3291} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3294} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:29 Step:3295} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3297} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3297} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3300} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:29 Step:3301} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3303} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3303} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3305} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3305} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3308} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:29 Step:3313} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3315} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3315} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3319} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:29 Step:3319} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3321} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3321} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3323} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3323} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3326} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:30 Step:3327} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3329} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3329} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3331} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3333} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3333} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3336} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:30 Step:3341} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3344} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:30 Step:3349} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3351} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3351} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3354} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:30 Step:3355} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3357} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3357} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3359} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3359} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3362} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:30 Step:3365} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3367} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3367} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3369} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3369} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3372} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:31 Step:3375} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3377} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3377} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3380} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:31 Step:3387} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3389} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3389} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3391} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3391} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3393} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3393} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3396} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:31 Step:3397} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3399} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3399} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3402} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:31 Step:3403} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3405} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3407} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3410} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:31 Step:3413} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3415} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3415} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3418} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:31 Step:3419} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3421} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3425} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:32 Step:3425} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3428} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3429} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3431} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:32 Step:3433} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3435} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:32 Step:3435} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3438} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3441} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:32 Step:3441} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3443} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:32 Step:3447} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3449} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:32 Step:3449} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3453} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3453} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3456} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3457} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3460} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3463} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:32 Step:3463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3465} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:32 Step:3465} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3468} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3473} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3475} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3477} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3477} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3480} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:33 Step:3487} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3489} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3491} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3494} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:33 Step:3495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3497} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3497} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3499} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3499} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3502} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:33 Step:3503} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3505} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3505} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3508} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:33 Step:3509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3511} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3513} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3517} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:33 Step:3517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3521} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3523} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:34 Step:3523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3527} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3527} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3529} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:34 Step:3529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3533} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3536} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3539} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:34 Step:3539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3541} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:34 Step:3541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3545} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:35 Step:3601} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:35 Step:3609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3611} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3614} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3619} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3622} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3625} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3627} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3627} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3629} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3629} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3632} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3645} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3647} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:38 Step:3731} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3733} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:38 Step:3733} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3735} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:38 Step:3735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3737} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:38 Step:3737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3740} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3741} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3743} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3749} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3752} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3753} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3756} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3760} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3763} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3767} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3770} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3774} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3778} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3779} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3781} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3784} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3789} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3789} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:42 Step:3895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3897} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3900} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3903} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3905} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3908} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3973} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3975} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3975} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3978} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3979} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3981} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3983} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3987} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:4055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:4057} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:4057} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:4059} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:4059} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:4061} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:4061} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:4064} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:4065} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:4069} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:4071} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:4071} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:4073} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:4075} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:4075} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:4077} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:4077} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:4080} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:4081} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:4085} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:4087} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:4087} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:4090} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:4091} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:4095} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:4095} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:4098} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:4099} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:4101} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:47 Step:4101} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:4104} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:4105} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:4107} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:47 Step:4107} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:4109} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:47 Step:4109} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:4112} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:4115} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:4117} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:47 Step:4117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:4119} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:49 Step:4217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4219} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4219} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4222} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4223} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4225} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4225} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4230} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:52 Step:4335} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4337} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4339} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4341} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4343} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4343} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4346} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:52 Step:4347} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4349} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4351} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4351} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4353} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4353} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4355} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4355} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4357} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4357} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4360} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:53 Step:4361} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4363} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4366} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:53 Step:4367} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4369} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4369} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4372} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4419} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4421} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:54 Step:4421} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4425} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4427} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:54 Step:4427} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4435} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4437} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4439} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:54 Step:4439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4441} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:54 Step:4441} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4444} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4447} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4449} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4451} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4451} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4453} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4453} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4455} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4457} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4457} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4459} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4459} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4464} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4465} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4467} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4470} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4473} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4476} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4481} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4485} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4488} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4491} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4495} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4499} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4499} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4502} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4503} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4505} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4505} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4508} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4513} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4515} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4518} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4523} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4526} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:57 Step:4527} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4529} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4531} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4531} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4533} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4535} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4538} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:57 Step:4539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4540} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4543} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4543} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4545} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4547} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4549} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4559} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4561} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4563} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4565} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4567} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4569} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4571} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4573} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4576} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:58 Step:4577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4579} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4582} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:58 Step:4585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4587} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4589} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4591} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4593} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4597} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:58 Step:4597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4599} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4602} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:58 Step:4603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4606} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4607} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4610} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4614} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4617} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4620} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4625} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4628} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4629} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4633} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4633} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4637} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4637} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4641} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4644} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4645} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4648} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4651} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4653} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4656} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4660} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4663} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4666} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4669} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4671} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4674} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4676} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4679} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4681} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4683} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4685} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4687} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4690} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4693} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4695} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4698} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4699} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4700} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4703} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4706} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4709} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4712} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4713} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4715} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4723} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4725} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4731} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4733} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4741} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4743} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4745} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4751} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4754} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4758} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4762} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4766} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4769} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4772} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4773} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4776} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4779} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4779} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4781} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4783} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4786} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4789} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4792} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4796} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4797} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4800} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4801} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4803} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4807} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4807} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4810} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4814} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4819} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4822} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4823} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4826} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4829} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4829} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4832} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4837} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4842} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4843} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4847} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4851} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4854} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4855} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4858} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4859} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4862} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4866} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4869} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4869} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4873} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4876} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4880} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4881} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4884} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4885} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4887} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4887} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4890} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4894} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4897} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4901} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4904} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4907} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4909} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4912} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4912} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4915} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4918} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4922} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4926} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4929} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4932} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4935} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:06 Step:4935} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4938} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4939} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4943} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4943} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4945} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:06 Step:4945} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4949} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4949} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4952} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4953} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4955} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:06 Step:4955} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4958} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4959} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4961} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:06 Step:4961} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4964} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4964} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:06 Step:4965} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4967} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4967} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4970} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4971} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4973} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4973} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4976} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4977} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4980} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4986} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4987} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4989} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4992} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4993} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4996} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4999} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4999} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:5003} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:5003} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:5005} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:5005} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:5008} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:5009} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:5011} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:5011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:5014} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:5015} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:5017} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:08 Step:5017} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:5021} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:5021} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:5025} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:5025} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:5028} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:5029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:5031} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:08 Step:5031} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:5036} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:5037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:5040} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:5041} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:5044} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:5045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:5048} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:5049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:5052} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5181} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5184} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5185} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5187} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:5187} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5190} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5191} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5193} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:5193} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5196} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5307} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5309} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:14 Step:5309} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5313} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5313} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5316} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5317} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5320} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5321} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5324} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5325} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:14 Step:5327} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:14 Step:5329} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5331} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:14 Step:5331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5335} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5335} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5339} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5341} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5343} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:14 Step:5343} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5347} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5347} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5351} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5351} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5355} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5355} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5358} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5358} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:15 Step:5359} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5363} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5407} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5410} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5411} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5413} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5413} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5416} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5417} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5422} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5539} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5547} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5549} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5551} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5555} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:19 Step:5555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5557} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5560} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:19 Step:5560} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5563} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5565} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5568} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:19 Step:5569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5572} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:19 Step:5573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5575} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5578} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:19 Step:5578} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5579} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:20 Step:5625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5627} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5627} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5630} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5630} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:21 Step:5631} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5633} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5633} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5636} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5637} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5639} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5639} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5641} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5644} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5644} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5645} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5647} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5651} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5656} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5664} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5665} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5668} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5668} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:22 Step:5669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5670} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:22 Step:5671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5673} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5682} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5719} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5722} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5722} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5723} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5726} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5729} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5729} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5731} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5731} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5734} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5737} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5739} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5739} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5742} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5742} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5745} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5749} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5753} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5757} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5762} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5765} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:24 Step:5765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5768} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5771} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:24 Step:5771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5774} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5774} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5789} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:24 Step:5789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5792} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5795} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:24 Step:5795} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5797} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:24 Step:5797} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5800} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5801} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5803} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:24 Step:5803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5806} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5807} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5809} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5809} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5812} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5815} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5818} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5821} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5821} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5824} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5825} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5827} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5830} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5836} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5840} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5841} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5843} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5873} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5875} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5878} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5879} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5881} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5883} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5883} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5885} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5885} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5887} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5887} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5889} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5889} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5892} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5897} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5902} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:26 Step:5903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5905} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5908} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5908} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:27 Step:5909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5911} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5914} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5917} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5920} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5923} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5925} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5925} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5928} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5987} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5990} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5991} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5994} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5995} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5997} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:6001} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:6001} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:6003} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:6003} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:6008} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:6009} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:6012} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:6013} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:6016} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:6017} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:6020} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:6021} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:6023} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:6023} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:6026} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:6027} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:6030} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:6030} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:29 Step:6031} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:6034} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:6035} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:6037} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:6037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:6041} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:6043} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:6045} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:6045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:6048} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:6048} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:6049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:6052} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:6053} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:6055} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:6055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:6058} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:6059} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:6062} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:6091} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:6093} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:31 Step:6093} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:6097} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:6097} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:6100} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:6100} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:6101} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:6104} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? diff --git a/logs/2025-11-04_20.36.21__NVECSJ/Gym_1.log b/logs/2025-11-04_20.36.21__NVECSJ/Gym_1.log new file mode 100644 index 0000000..56cb3ef --- /dev/null +++ b/logs/2025-11-04_20.36.21__NVECSJ/Gym_1.log @@ -0,0 +1,1781 @@ +{Tue 20:36:21 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 93, +Msg: (time (now 634.60))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -28.58 -18.21)) (llowerarm (pol 0.21 29.55 -18.16))) (G2R (pol 29.99 -12.72 0.55)) (G1R (pol 29.53 -8.76 0.53)) (F1R (pol 29.52 8.65 -1.16)) (F2R (pol 33.11 -28.10 -0.90)) (B (pol 15.26 -21.56 -2.02)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.09 -47.73 -1.48) (pol 14.87 17.39 -2.09)) (L (pol 33.12 -27.98 -1.19) (pol 29.58 8.63 -1.28)) (L (pol 29.55 8.60 -1.40) (pol 5.11 59.70 -6.37)) (L (pol 33.13 -28.15 -0.92) (pol 18.00 -60.11 -1.64)) (L (pol 27.50 -5.53 -1.12) (pol 28.73 -17.63 -1.16)) (L (pol 27.53 -5.38 -0.91) (pol 29.31 -4.95 -1.27)) (L (pol 28.74 -17.47 -0.98) (pol 30.41 -16.58 -0.81)) (L (pol 17.15 -19.25 -1.78) (pol 16.43 -15.88 -1.85)) (L (pol 16.44 -15.45 -1.91) (pol 15.27 -14.07 -2.17)) (L (pol 15.27 -13.95 -2.17) (pol 14.12 -15.09 -2.13)) (L (pol 14.07 -15.27 -2.06) (pol 13.37 -19.42 -2.35)) (L (pol 13.34 -19.28 -2.57) (pol 13.42 -24.84 -2.39)) (L (pol 13.45 -24.61 -2.20) (pol 14.32 -28.31 -2.40)) (L (pol 14.31 -28.35 -2.43) (pol 15.53 -28.85 -2.09)) (L (pol 15.53 -28.75 -2.17) (pol 16.63 -27.07 -1.69)) (L (pol 16.65 -26.89 -1.86) (pol 17.19 -22.97 -2.02)) (L (pol 17.23 -23.24 -1.89) (pol 17.13 -19.31 -1.76)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:21 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 101, +Msg: (time (now 634.60))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -28.58 -18.21)) (llowerarm (pol 0.21 29.55 -18.16))) (G2R (pol 29.99 -12.72 0.55)) (G1R (pol 29.53 -8.76 0.53)) (F1R (pol 29.52 8.65 -1.16)) (F2R (pol 33.11 -28.10 -0.90)) (B (pol 15.26 -21.56 -2.02)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.09 -47.73 -1.48) (pol 14.87 17.39 -2.09)) (L (pol 33.12 -27.98 -1.19) (pol 29.58 8.63 -1.28)) (L (pol 29.55 8.60 -1.40) (pol 5.11 59.70 -6.37)) (L (pol 33.13 -28.15 -0.92) (pol 18.00 -60.11 -1.64)) (L (pol 27.50 -5.53 -1.12) (pol 28.73 -17.63 -1.16)) (L (pol 27.53 -5.38 -0.91) (pol 29.31 -4.95 -1.27)) (L (pol 28.74 -17.47 -0.98) (pol 30.41 -16.58 -0.81)) (L (pol 17.15 -19.25 -1.78) (pol 16.43 -15.88 -1.85)) (L (pol 16.44 -15.45 -1.91) (pol 15.27 -14.07 -2.17)) (L (pol 15.27 -13.95 -2.17) (pol 14.12 -15.09 -2.13)) (L (pol 14.07 -15.27 -2.06) (pol 13.37 -19.42 -2.35)) (L (pol 13.34 -19.28 -2.57) (pol 13.42 -24.84 -2.39)) (L (pol 13.45 -24.61 -2.20) (pol 14.32 -28.31 -2.40)) (L (pol 14.31 -28.35 -2.43) (pol 15.53 -28.85 -2.09)) (L (pol 15.53 -28.75 -2.17) (pol 16.63 -27.07 -1.69)) (L (pol 16.65 -26.89 -1.86) (pol 17.19 -22.97 -2.02)) (L (pol 17.23 -23.24 -1.89) (pol 17.13 -19.31 -1.76)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:21 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 109, +Msg: (time (now 634.60))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -28.58 -18.21)) (llowerarm (pol 0.21 29.55 -18.16))) (G2R (pol 29.99 -12.72 0.55)) (G1R (pol 29.53 -8.76 0.53)) (F1R (pol 29.52 8.65 -1.16)) (F2R (pol 33.11 -28.10 -0.90)) (B (pol 15.26 -21.56 -2.02)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.09 -47.73 -1.48) (pol 14.87 17.39 -2.09)) (L (pol 33.12 -27.98 -1.19) (pol 29.58 8.63 -1.28)) (L (pol 29.55 8.60 -1.40) (pol 5.11 59.70 -6.37)) (L (pol 33.13 -28.15 -0.92) (pol 18.00 -60.11 -1.64)) (L (pol 27.50 -5.53 -1.12) (pol 28.73 -17.63 -1.16)) (L (pol 27.53 -5.38 -0.91) (pol 29.31 -4.95 -1.27)) (L (pol 28.74 -17.47 -0.98) (pol 30.41 -16.58 -0.81)) (L (pol 17.15 -19.25 -1.78) (pol 16.43 -15.88 -1.85)) (L (pol 16.44 -15.45 -1.91) (pol 15.27 -14.07 -2.17)) (L (pol 15.27 -13.95 -2.17) (pol 14.12 -15.09 -2.13)) (L (pol 14.07 -15.27 -2.06) (pol 13.37 -19.42 -2.35)) (L (pol 13.34 -19.28 -2.57) (pol 13.42 -24.84 -2.39)) (L (pol 13.45 -24.61 -2.20) (pol 14.32 -28.31 -2.40)) (L (pol 14.31 -28.35 -2.43) (pol 15.53 -28.85 -2.09)) (L (pol 15.53 -28.75 -2.17) (pol 16.63 -27.07 -1.69)) (L (pol 16.65 -26.89 -1.86) (pol 17.19 -22.97 -2.02)) (L (pol 17.23 -23.24 -1.89) (pol 17.13 -19.31 -1.76)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:21 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 117, +Msg: (time (now 634.60))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -28.58 -18.21)) (llowerarm (pol 0.21 29.55 -18.16))) (G2R (pol 29.99 -12.72 0.55)) (G1R (pol 29.53 -8.76 0.53)) (F1R (pol 29.52 8.65 -1.16)) (F2R (pol 33.11 -28.10 -0.90)) (B (pol 15.26 -21.56 -2.02)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.09 -47.73 -1.48) (pol 14.87 17.39 -2.09)) (L (pol 33.12 -27.98 -1.19) (pol 29.58 8.63 -1.28)) (L (pol 29.55 8.60 -1.40) (pol 5.11 59.70 -6.37)) (L (pol 33.13 -28.15 -0.92) (pol 18.00 -60.11 -1.64)) (L (pol 27.50 -5.53 -1.12) (pol 28.73 -17.63 -1.16)) (L (pol 27.53 -5.38 -0.91) (pol 29.31 -4.95 -1.27)) (L (pol 28.74 -17.47 -0.98) (pol 30.41 -16.58 -0.81)) (L (pol 17.15 -19.25 -1.78) (pol 16.43 -15.88 -1.85)) (L (pol 16.44 -15.45 -1.91) (pol 15.27 -14.07 -2.17)) (L (pol 15.27 -13.95 -2.17) (pol 14.12 -15.09 -2.13)) (L (pol 14.07 -15.27 -2.06) (pol 13.37 -19.42 -2.35)) (L (pol 13.34 -19.28 -2.57) (pol 13.42 -24.84 -2.39)) (L (pol 13.45 -24.61 -2.20) (pol 14.32 -28.31 -2.40)) (L (pol 14.31 -28.35 -2.43) (pol 15.53 -28.85 -2.09)) (L (pol 15.53 -28.75 -2.17) (pol 16.63 -27.07 -1.69)) (L (pol 16.65 -26.89 -1.86) (pol 17.19 -22.97 -2.02)) (L (pol 17.23 -23.24 -1.89) (pol 17.13 -19.31 -1.76)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:21 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 125, +Msg: (time (now 634.60))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -28.58 -18.21)) (llowerarm (pol 0.21 29.55 -18.16))) (G2R (pol 29.99 -12.72 0.55)) (G1R (pol 29.53 -8.76 0.53)) (F1R (pol 29.52 8.65 -1.16)) (F2R (pol 33.11 -28.10 -0.90)) (B (pol 15.26 -21.56 -2.02)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.09 -47.73 -1.48) (pol 14.87 17.39 -2.09)) (L (pol 33.12 -27.98 -1.19) (pol 29.58 8.63 -1.28)) (L (pol 29.55 8.60 -1.40) (pol 5.11 59.70 -6.37)) (L (pol 33.13 -28.15 -0.92) (pol 18.00 -60.11 -1.64)) (L (pol 27.50 -5.53 -1.12) (pol 28.73 -17.63 -1.16)) (L (pol 27.53 -5.38 -0.91) (pol 29.31 -4.95 -1.27)) (L (pol 28.74 -17.47 -0.98) (pol 30.41 -16.58 -0.81)) (L (pol 17.15 -19.25 -1.78) (pol 16.43 -15.88 -1.85)) (L (pol 16.44 -15.45 -1.91) (pol 15.27 -14.07 -2.17)) (L (pol 15.27 -13.95 -2.17) (pol 14.12 -15.09 -2.13)) (L (pol 14.07 -15.27 -2.06) (pol 13.37 -19.42 -2.35)) (L (pol 13.34 -19.28 -2.57) (pol 13.42 -24.84 -2.39)) (L (pol 13.45 -24.61 -2.20) (pol 14.32 -28.31 -2.40)) (L (pol 14.31 -28.35 -2.43) (pol 15.53 -28.85 -2.09)) (L (pol 15.53 -28.75 -2.17) (pol 16.63 -27.07 -1.69)) (L (pol 16.65 -26.89 -1.86) (pol 17.19 -22.97 -2.02)) (L (pol 17.23 -23.24 -1.89) (pol 17.13 -19.31 -1.76)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:21 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 133, +Msg: (time (now 634.60))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -28.58 -18.21)) (llowerarm (pol 0.21 29.55 -18.16))) (G2R (pol 29.99 -12.72 0.55)) (G1R (pol 29.53 -8.76 0.53)) (F1R (pol 29.52 8.65 -1.16)) (F2R (pol 33.11 -28.10 -0.90)) (B (pol 15.26 -21.56 -2.02)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.09 -47.73 -1.48) (pol 14.87 17.39 -2.09)) (L (pol 33.12 -27.98 -1.19) (pol 29.58 8.63 -1.28)) (L (pol 29.55 8.60 -1.40) (pol 5.11 59.70 -6.37)) (L (pol 33.13 -28.15 -0.92) (pol 18.00 -60.11 -1.64)) (L (pol 27.50 -5.53 -1.12) (pol 28.73 -17.63 -1.16)) (L (pol 27.53 -5.38 -0.91) (pol 29.31 -4.95 -1.27)) (L (pol 28.74 -17.47 -0.98) (pol 30.41 -16.58 -0.81)) (L (pol 17.15 -19.25 -1.78) (pol 16.43 -15.88 -1.85)) (L (pol 16.44 -15.45 -1.91) (pol 15.27 -14.07 -2.17)) (L (pol 15.27 -13.95 -2.17) (pol 14.12 -15.09 -2.13)) (L (pol 14.07 -15.27 -2.06) (pol 13.37 -19.42 -2.35)) (L (pol 13.34 -19.28 -2.57) (pol 13.42 -24.84 -2.39)) (L (pol 13.45 -24.61 -2.20) (pol 14.32 -28.31 -2.40)) (L (pol 14.31 -28.35 -2.43) (pol 15.53 -28.85 -2.09)) (L (pol 15.53 -28.75 -2.17) (pol 16.63 -27.07 -1.69)) (L (pol 16.65 -26.89 -1.86) (pol 17.19 -22.97 -2.02)) (L (pol 17.23 -23.24 -1.89) (pol 17.13 -19.31 -1.76)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:21 Step:5} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:21 Step:7} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:21 Step:7} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:21 Step:9} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:21 Step:9} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:21 Step:11} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:22 Step:11} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:22 Step:13} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:22 Step:13} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:22 Step:16} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:32 Step:16} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:32 Step:534} Server_Comm.py: The agent lost 517 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:547} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:549} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:551} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:553} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:555} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:558} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:561} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:563} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:33 Step:565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:569} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:572} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:575} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:579} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:582} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:583} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:585} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:587} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:589} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:592} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:596} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:599} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:601} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:601} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:604} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:605} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:607} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:611} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:618} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:623} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:626} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:627} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:629} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:629} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:632} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:633} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:635} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:635} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:638} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:639} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:641} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:645} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:645} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:648} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:651} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:656} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:660} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:663} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:667} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:667} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:35 Step:673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:675} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:36 Step:675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:677} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:36 Step:677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:680} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:745} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:748} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:753} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:753} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:755} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:758} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:38 Step:761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:763} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:766} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:38 Step:769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:773} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:773} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:776} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:38 Step:777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:779} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:779} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:782} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:38 Step:785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:787} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:789} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:791} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:807} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:807} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:809} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:809} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:813} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:814} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:817} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:862} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:869} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:40 Step:869} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:871} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:40 Step:871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:874} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 652.03))(GS (sl 0) (sr 0) (t 317.10) (pm PlayOn))(foul 7)(GYR (n torso) (rt 69.05 29.18 -98.82))(ACC (n torso) (a -4.67 6.95 12.85))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -57.64))(HJ (n raj2) (ax 1.01))(HJ (n raj3) (ax 30.56))(HJ (n raj4) (ax 48.06))(HJ (n laj1) (ax -57.64))(HJ (n laj2) (ax 3.28))(HJ (n laj3) (ax -30.55))(HJ (n laj4) (ax 1.00))(HJ (n rlj1) (ax -34.93))(HJ (n rlj2) (ax -45.00))(HJ (n rlj3) (ax 89.24))(HJ (n rlj4) (ax -123.04))(HJ (n rlj5) (ax 48.44))(HJ (n rlj6) (ax 43.11))(HJ (n llj1) (ax -34.99))(HJ (n llj2) (ax 45.00))(HJ (n llj3) (ax 87.45))(HJ (n llj4) (ax -123.14))(HJ (n llj5) (ax 48.43))(HJ (n llj6) (ax -43.17)) +{Tue 20:36:40 Step:875} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:877} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:40 Step:885} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:887} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:40 Step:887} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:897} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:899} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:903} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:906} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:41 Step:907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:913} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:915} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:917} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:919} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:922} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:41 Step:925} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:927} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:929} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:932} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:935} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:937} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:937} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:940} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:943} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:943} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:946} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:949} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:951} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:954} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:43 Step:981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:983} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:985} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:985} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:987} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:987} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:989} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:991} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:991} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:994} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:43 Step:995} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:997} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:999} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:999} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1002} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 654.60))(GS (sl 0) (sr 0) (t 319.66) (pm PlayOn))(foul 7)(GYR (n torso) (rt 513.91 2.36 -0.94))(ACC (n torso) (a 1.11 -25.25 -4.48))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax 28.18))(HJ (n raj2) (ax -3.80))(HJ (n raj3) (ax -43.53))(HJ (n raj4) (ax 0.95))(HJ (n laj1) (ax 27.97))(HJ (n laj2) (ax 2.47))(HJ (n laj3) (ax 43.53))(HJ (n laj4) (ax -1.07))(HJ (n rlj1) (ax -8.90))(HJ (n rlj2) (ax 17.45))(HJ (n rlj3) (ax 96.33))(HJ (n rlj4) (ax -130.54))(HJ (n rlj5) (ax 72.27))(HJ (n rlj6) (ax 51.90))(HJ (n llj1) (ax -12.71))(HJ (n llj2) (ax -17.77))(HJ (n llj3) (ax 96.34))(HJ (n llj4) (ax -130.56))(HJ (n llj5) (ax 72.24))(HJ (n llj6) (ax -51.90)) +{Tue 20:36:43 Step:1002} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1027} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 655.10))(GS (sl 0) (sr 0) (t 320.16) (pm PlayOn))(foul 7)(GYR (n torso) (rt 9.76 19.38 -37.82))(ACC (n torso) (a -5.42 -5.87 -15.17))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (mypos -10.63 -0.24 0.06) (myorien -152.86) (ballpos -9.00 0.00 0.04) (L (pol 3.77 -56.83 -46.67) (pol 5.16 -41.55 -58.28)))(HJ (n raj1) (ax -86.81))(HJ (n raj2) (ax -13.82))(HJ (n raj3) (ax 48.85))(HJ (n raj4) (ax 75.00))(HJ (n laj1) (ax -86.80))(HJ (n laj2) (ax 13.82))(HJ (n laj3) (ax -48.84))(HJ (n laj4) (ax -75.00))(HJ (n rlj1) (ax -2.34))(HJ (n rlj2) (ax 21.60))(HJ (n rlj3) (ax 92.96))(HJ (n rlj4) (ax -123.77))(HJ (n rlj5) (ax 71.96))(HJ (n rlj6) (ax 44.99))(HJ (n llj1) (ax -17.06))(HJ (n llj2) (ax 30.79))(HJ (n llj3) (ax 62.05))(HJ (n llj4) (ax -104.79))(HJ (n llj5) (ax 51.26))(HJ (n llj6) (ax -17.60)) +{Tue 20:36:44 Step:1033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1035} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1035} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1037} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1039} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1039} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1042} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1043} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1046} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1047} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1049} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1052} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1053} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1055} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1057} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1057} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1059} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1059} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1062} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:45 Step:1063} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1064} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1065} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1067} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1067} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1071} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:45 Step:1071} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1073} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1075} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1075} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1077} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1077} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1079} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1119} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1121} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1121} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1125} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:46 Step:1125} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1128} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:46 Step:1129} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1131} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1131} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1133} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1136} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:46 Step:1143} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1147} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:46 Step:1147} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1151} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1151} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1155} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1155} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1158} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1159} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1162} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1169} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1171} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1173} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1175} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1175} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1177} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1177} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1179} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1179} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1182} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1183} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1185} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1229} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1231} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1231} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1233} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1233} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1236} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:48 Step:1237} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1239} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1239} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1241} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1255} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1257} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1260} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:49 Step:1261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1263} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1263} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1266} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:49 Step:1267} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1269} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1269} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1271} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1271} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1273} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1273} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1275} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1275} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1277} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1277} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1280} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:49 Step:1281} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1283} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1283} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1289} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1291} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1293} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1296} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:50 Step:1297} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1299} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1299} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1301} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1301} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1305} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1307} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1307} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1310} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:50 Step:1311} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1313} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1313} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1316} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:50 Step:1317} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1320} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:50 Step:1329} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1331} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1334} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:51 Step:1335} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1338} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:51 Step:1379} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1381} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:51 Step:1381} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1383} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:51 Step:1383} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1387} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1389} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1389} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1392} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:52 Step:1395} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1397} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1397} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1399} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1399} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1457} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1460} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1462} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1465} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1467} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1471} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1473} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1476} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:54 Step:1477} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 664.11))(GS (sl 0) (sr 0) (t 329.16) (pm PlayOn))(foul 7)(GYR (n torso) (rt 402.26 -79.63 -6.85))(ACC (n torso) (a 3.79 -2.38 0.74))(HJ (n hj1) (ax 1.87))(HJ (n hj2) (ax 1.86))(See (P (team Gym) (id 1) (rlowerarm (pol 0.24 -56.34 -20.03)) (llowerarm (pol 0.22 48.79 -12.35))) (G2R (pol 25.69 -41.14 38.15)) (G1R (pol 25.61 -35.94 40.25)) (F1R (pol 27.63 -10.84 44.54)) (F2R (pol 27.36 -58.92 25.68)) (B (pol 1.65 -21.96 37.01)) (mypos -10.60 -0.34 0.21) (myorien 28.20) (ballpos -9.00 0.00 0.04) (L (pol 11.49 -60.01 24.20) (pol 14.81 20.31 43.37)) (L (pol 27.38 -58.96 25.76) (pol 27.61 -10.91 44.29)) (L (pol 27.65 -10.76 44.59) (pol 10.52 59.77 27.18)) (L (pol 27.36 -58.80 25.77) (pol 25.75 -60.11 25.14)) (L (pol 24.04 -29.30 40.66) (pol 23.93 -45.26 34.21)) (L (pol 24.00 -29.69 40.76) (pol 25.82 -29.73 40.37)) (L (pol 23.97 -45.38 34.10) (pol 25.70 -44.85 34.40)) (L (pol 12.60 -36.37 37.50) (pol 12.33 -30.16 39.64)) (L (pol 12.33 -29.86 39.97) (pol 11.46 -25.01 41.42)) (L (pol 11.44 -24.90 41.57) (pol 10.24 -23.05 41.46)) (L (pol 10.23 -22.80 41.57) (pol 9.12 -26.64 40.44)) (L (pol 9.12 -26.68 40.16) (pol 8.61 -35.49 37.59)) (L (pol 8.62 -35.52 37.53) (pol 9.03 -43.31 34.15)) (L (pol 9.03 -43.74 33.80) (pol 10.13 -47.44 32.13)) (L (pol 10.12 -47.61 32.19) (pol 11.33 -46.59 32.78)) (L (pol 11.32 -46.69 32.74) (pol 12.27 -42.41 35.09)) (L (pol 12.26 -42.48 34.89) (pol 12.60 -36.32 37.60)))(HJ (n raj1) (ax 17.50))(HJ (n raj2) (ax -36.01))(HJ (n raj3) (ax -91.80))(HJ (n raj4) (ax 70.05))(HJ (n laj1) (ax 29.59))(HJ (n laj2) (ax 28.47))(HJ (n laj3) (ax 91.18))(HJ (n laj4) (ax -70.43))(HJ (n rlj1) (ax -86.34))(HJ (n rlj2) (ax -46.15))(HJ (n rlj3) (ax 105.17))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax -50.06))(HJ (n rlj6) (ax -17.20))(HJ (n llj1) (ax -93.57))(HJ (n llj2) (ax 46.45))(HJ (n llj3) (ax 103.27))(HJ (n llj4) (ax 1.65))(HJ (n llj5) (ax -49.88))(HJ (n llj6) (ax 16.97)) +{Tue 20:36:54 Step:1477} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1479} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1481} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1483} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1483} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1485} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1488} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 664.33))(GS (sl 0) (sr 0) (t 329.38) (pm PlayOn))(foul 7)(GYR (n torso) (rt 62.48 79.88 -6.98))(ACC (n torso) (a -7.73 4.27 18.31))(HJ (n hj1) (ax -18.66))(HJ (n hj2) (ax -18.65))(HJ (n raj1) (ax 17.50))(HJ (n raj2) (ax -35.70))(HJ (n raj3) (ax -91.79))(HJ (n raj4) (ax 70.03))(HJ (n laj1) (ax -32.54))(HJ (n laj2) (ax 1.50))(HJ (n laj3) (ax 14.11))(HJ (n laj4) (ax 4.63))(HJ (n rlj1) (ax -84.18))(HJ (n rlj2) (ax -39.25))(HJ (n rlj3) (ax 99.99))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax -43.17))(HJ (n rlj6) (ax -17.18))(HJ (n llj1) (ax -88.54))(HJ (n llj2) (ax 39.58))(HJ (n llj3) (ax 104.58))(HJ (n llj4) (ax -5.87))(HJ (n llj5) (ax -43.22))(HJ (n llj6) (ax -45.79)) +{Tue 20:36:54 Step:1488} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:54 Step:1501} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:54 Step:1503} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1505} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1505} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1507} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1509} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1510} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:54 Step:1511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1515} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1517} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1521} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1527} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1527} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1529} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1532} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1539} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1553} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1555} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1558} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1561} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1563} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:56 Step:1563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1565} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:56 Step:1565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1568} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:56 Step:1569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1572} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:57 Step:1637} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1639} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1639} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1642} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:57 Step:1643} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1645} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1645} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1648} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:57 Step:1649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1651} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1654} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:57 Step:1654} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1656} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1659} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1662} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:58 Step:1663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1665} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1665} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1667} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1669} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1671} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1673} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1675} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1677} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1679} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1683} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:58 Step:1683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1689} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1711} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1751} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1753} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1753} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1756} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:00 Step:1759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1761} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1764} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:00 Step:1765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1767} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1769} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1771} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1773} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1773} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1775} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1778} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:02 Step:1861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1863} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:02 Step:1863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1869} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:02 Step:1869} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1875} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:02 Step:1875} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1877} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:02 Step:1879} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1881} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:02 Step:1881} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1884} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:02 Step:1885} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1888} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1893} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1897} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1902} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1902} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:03 Step:1903} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 672.63))(GS (sl 0) (sr 0) (t 337.67) (pm PlayOn))(foul 7)(GYR (n torso) (rt 426.56 -83.86 250.51))(ACC (n torso) (a -2.61 -5.02 -9.06))(HJ (n hj1) (ax -77.11))(HJ (n hj2) (ax -49.19))(See (P (team Gym) (id 1) (rlowerarm (pol 0.25 2.87 -14.10)) (rfoot (pol 0.49 -17.24 -40.27)) (lfoot (pol 0.49 -6.81 -37.73))) (G2R (pol 25.98 -41.96 14.69)) (G1R (pol 26.00 -39.91 10.55)) (F1R (pol 27.98 -32.33 -6.69)) (F2R (pol 27.75 -54.40 29.93)) (B (pol 2.02 -40.13 3.04)) (mypos -10.99 -0.33 0.12) (myorien 33.12) (ballpos -9.00 0.00 0.04) (L (pol 12.50 -60.19 36.30) (pol 15.08 -21.73 -25.61)) (L (pol 27.73 -54.08 29.85) (pol 27.91 -32.64 -6.74)) (L (pol 27.97 -32.44 -6.88) (pol 10.35 21.34 -58.28)) (L (pol 27.77 -54.29 29.83) (pol 20.15 -59.88 36.81)) (L (pol 24.45 -39.22 5.45) (pol 24.34 -46.24 17.83)) (L (pol 24.41 -38.96 5.31) (pol 26.20 -39.34 5.84)) (L (pol 24.30 -46.28 18.00) (pol 26.13 -46.04 17.36)) (L (pol 12.99 -42.26 10.94) (pol 12.69 -40.05 6.29)) (L (pol 12.71 -40.01 6.39) (pol 11.83 -37.83 2.66)) (L (pol 11.82 -38.28 2.70) (pol 10.62 -37.45 1.48)) (L (pol 10.61 -37.41 1.64) (pol 9.48 -39.00 4.15)) (L (pol 9.49 -39.03 4.19) (pol 8.99 -42.38 10.32)) (L (pol 9.00 -42.47 10.29) (pol 9.40 -45.94 16.49)) (L (pol 9.40 -46.19 16.45) (pol 10.49 -47.81 19.61)) (L (pol 10.47 -47.82 19.71) (pol 11.71 -47.17 18.89)) (L (pol 11.70 -47.29 18.91) (pol 12.64 -45.15 15.59)) (L (pol 12.63 -45.22 15.51) (pol 12.97 -42.39 10.75)))(HJ (n raj1) (ax -100.26))(HJ (n raj2) (ax 2.86))(HJ (n raj3) (ax 114.17))(HJ (n raj4) (ax 95.22))(HJ (n laj1) (ax -100.26))(HJ (n laj2) (ax 3.54))(HJ (n laj3) (ax -114.04))(HJ (n laj4) (ax -94.33))(HJ (n rlj1) (ax 0.69))(HJ (n rlj2) (ax 3.75))(HJ (n rlj3) (ax 2.65))(HJ (n rlj4) (ax -91.12))(HJ (n rlj5) (ax 58.37))(HJ (n rlj6) (ax 10.54))(HJ (n llj1) (ax -11.56))(HJ (n llj2) (ax -30.02))(HJ (n llj3) (ax 2.72))(HJ (n llj4) (ax -70.63))(HJ (n llj5) (ax 77.92))(HJ (n llj6) (ax 27.67)) +{Tue 20:37:03 Step:1903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1905} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:03 Step:1905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1909} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1912} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1915} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:03 Step:1915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1918} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1921} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:03 Step:1921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1925} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1928} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1931} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1935} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1937} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:03 Step:1937} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1939} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1941} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:1941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2021} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2021} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2023} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2023} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2025} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2025} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2028} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:2031} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2033} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2035} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2035} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2038} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:2039} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2041} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2043} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2043} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2046} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:2049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2051} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2053} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2055} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2057} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2057} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2059} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2059} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2061} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2061} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2064} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:2067} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:06 Step:2068} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:06 Step:2069} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2072} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:2073} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2076} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:07 Step:2077} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2079} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2079} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2082} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:07 Step:2083} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2085} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2085} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2087} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2087} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2090} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:07 Step:2090} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:07 Step:2091} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2093} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2095} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2095} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2097} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2097} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2099} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2099} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2101} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2101} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2103} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2103} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2105} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 676.68))(GS (sl 0) (sr 0) (t 341.71) (pm PlayOn))(foul 7)(GYR (n torso) (rt 56.27 -47.41 303.58))(ACC (n torso) (a -9.91 6.08 1.80))(HJ (n hj1) (ax -38.14))(HJ (n hj2) (ax -14.56))(See (P (team Gym) (id 1) (rlowerarm (pol 0.25 -28.05 -45.93))) (G2R (pol 25.97 -57.88 -29.14)) (G1R (pol 26.00 -58.75 -33.65)) (F2R (pol 27.77 -55.88 -10.42)) (mypos -10.91 -0.09 0.06) (myorien -44.07) (ballpos -9.00 0.00 0.04) (L (pol 14.73 -53.08 10.79) (pol 10.92 -60.22 -28.66)) (L (pol 27.77 -56.25 -10.39) (pol 25.94 -59.79 -30.06)) (L (pol 27.80 -56.20 -10.30) (pol 9.98 -43.11 51.43)) (L (pol 24.10 -59.55 -29.64) (pol 24.23 -58.95 -24.01)) (L (pol 24.29 -58.87 -24.08) (pol 26.01 -59.10 -24.47)) (L (pol 9.06 -59.89 -28.52) (pol 9.35 -58.96 -24.23)) (L (pol 9.34 -59.43 -24.26) (pol 10.47 -58.50 -21.27)) (L (pol 10.44 -58.24 -21.11) (pol 11.66 -58.77 -22.22)) (L (pol 11.67 -58.75 -21.98) (pol 12.56 -59.41 -26.15)) (L (pol 12.57 -59.36 -26.03) (pol 12.73 -60.02 -28.95)))(HJ (n raj1) (ax -99.80))(HJ (n raj2) (ax -0.92))(HJ (n raj3) (ax 123.64))(HJ (n raj4) (ax 91.77))(HJ (n laj1) (ax -99.68))(HJ (n laj2) (ax -4.22))(HJ (n laj3) (ax -125.23))(HJ (n laj4) (ax -0.39))(HJ (n rlj1) (ax -4.62))(HJ (n rlj2) (ax -23.76))(HJ (n rlj3) (ax -12.79))(HJ (n rlj4) (ax -129.92))(HJ (n rlj5) (ax 75.72))(FRP (n rf) (c -0.04 -0.09 -0.00) (f 63.47 17.88 175.61))(HJ (n rlj6) (ax -28.88))(HJ (n llj1) (ax 5.98))(HJ (n llj2) (ax 44.74))(HJ (n llj3) (ax -10.96))(HJ (n llj4) (ax -42.24))(HJ (n llj5) (ax 79.39))(HJ (n llj6) (ax 28.42)) +{Tue 20:37:10 Step:2221} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2223} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:10 Step:2223} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2226} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2227} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2231} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2231} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2233} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2236} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2237} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2239} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:10 Step:2239} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2243} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2243} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2246} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2251} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2251} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2253} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2256} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2256} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:11 Step:2257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2259} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2263} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:13 Step:2353} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2355} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:13 Step:2355} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2358} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:13 Step:2361} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2363} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:13 Step:2363} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2365} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:13 Step:2377} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2379} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2381} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2381} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2384} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2385} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2387} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2387} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2390} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2391} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2393} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2393} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2397} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2397} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2400} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2401} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2403} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2405} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2405} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2407} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2407} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2409} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2412} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2413} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2414} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:14 Step:2415} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2419} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2421} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2421} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2423} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2427} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2429} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:15 Step:2429} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2433} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:15 Step:2433} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2438} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:15 Step:2439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2442} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:15 Step:2445} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2447} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:15 Step:2447} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2450} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:15 Step:2451} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2454} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:16 Step:2483} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2485} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2487} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2489} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2493} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2516} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:16 Step:2517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2520} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2524} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2524} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2526} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 685.11))(GS (sl 0) (sr 0) (t 350.13) (pm PlayOn))(foul 7)(GYR (n torso) (rt 189.08 0.42 49.21))(ACC (n torso) (a 2.93 -7.52 5.09))(HJ (n hj1) (ax -0.30))(HJ (n hj2) (ax -0.30))(HJ (n raj1) (ax -120.75))(HJ (n raj2) (ax 0.39))(HJ (n raj3) (ax 75.80))(HJ (n raj4) (ax 75.12))(HJ (n laj1) (ax -120.89))(HJ (n laj2) (ax 1.90))(HJ (n laj3) (ax -76.01))(HJ (n laj4) (ax -75.00))(HJ (n rlj1) (ax 0.68))(HJ (n rlj2) (ax -23.11))(HJ (n rlj3) (ax 13.92))(HJ (n rlj4) (ax -86.89))(HJ (n rlj5) (ax 55.43))(HJ (n rlj6) (ax -13.72))(HJ (n llj1) (ax 0.73))(HJ (n llj2) (ax 22.94))(HJ (n llj3) (ax 25.18))(HJ (n llj4) (ax -86.90))(HJ (n llj5) (ax 33.46))(FRP (n lf) (c 0.04 0.08 -0.01) (f -3.07 -24.98 24.19))(HJ (n llj6) (ax 14.34)) +{Tue 20:37:17 Step:2528} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2535} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:17 Step:2535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2538} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2541} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:17 Step:2541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2545} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2547} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 685.53))(GS (sl 0) (sr 0) (t 350.55) (pm PlayOn))(foul 7)(GYR (n torso) (rt 38.63 -42.80 -3.42))(ACC (n torso) (a -2.99 1.78 8.71))(HJ (n hj1) (ax 13.40))(HJ (n hj2) (ax 14.24))(See (G2R (pol 25.50 31.12 -33.96)) (G1R (pol 25.47 36.42 -33.46)) (F1R (pol 27.34 59.14 -30.37)) (F2R (pol 27.40 7.63 -34.94)) (B (pol 1.53 34.05 -52.36)) (mypos -10.46 0.06 0.51) (myorien -36.13) (ballpos -9.00 0.00 0.04) (L (pol 14.50 -18.13 -30.13) (pol 11.26 60.07 -31.75)) (L (pol 27.39 7.53 -35.18) (pol 27.33 58.88 -30.54)) (L (pol 27.36 58.65 -30.25) (pol 26.12 60.05 -30.01)) (L (pol 27.35 7.73 -35.12) (pol 10.08 -60.14 -8.71)) (L (pol 23.78 42.57 -34.47) (pol 23.86 25.19 -35.98)) (L (pol 23.85 42.54 -34.32) (pol 25.65 42.41 -34.44)) (L (pol 23.88 24.83 -36.08) (pol 25.65 25.57 -36.06)) (L (pol 12.46 34.33 -36.71) (pol 12.13 40.44 -35.80)) (L (pol 12.14 40.75 -35.92) (pol 11.23 45.86 -35.19)) (L (pol 11.24 45.81 -35.10) (pol 10.02 47.15 -35.32)) (L (pol 10.02 46.86 -35.18) (pol 8.92 43.22 -36.55)) (L (pol 8.92 43.16 -36.36) (pol 8.46 34.04 -37.71)) (L (pol 8.47 34.09 -38.00) (pol 8.94 24.16 -38.13)) (L (pol 8.94 24.41 -37.94) (pol 10.05 20.11 -37.61)) (L (pol 10.03 20.11 -37.80) (pol 11.26 21.51 -37.28)) (L (pol 11.26 21.85 -37.47) (pol 12.15 26.80 -37.35)) (L (pol 12.15 27.09 -37.23) (pol 12.47 34.02 -36.92)))(HJ (n raj1) (ax -115.98))(HJ (n raj2) (ax 0.18))(HJ (n raj3) (ax 84.58))(HJ (n raj4) (ax 75.21))(HJ (n laj1) (ax -116.57))(HJ (n laj2) (ax -1.34))(HJ (n laj3) (ax -89.57))(HJ (n laj4) (ax -70.21))(HJ (n rlj1) (ax 0.66))(HJ (n rlj2) (ax -20.48))(HJ (n rlj3) (ax -7.17))(HJ (n rlj4) (ax -80.89))(HJ (n rlj5) (ax 66.78))(FRP (n rf) (c -0.04 0.08 -0.01) (f 14.85 -9.98 29.88))(HJ (n rlj6) (ax -23.93))(HJ (n llj1) (ax 1.59))(HJ (n llj2) (ax 50.59))(HJ (n llj3) (ax 36.68))(HJ (n llj4) (ax -91.28))(HJ (n llj5) (ax 17.67))(HJ (n llj6) (ax 31.85)) +{Tue 20:37:17 Step:2548} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2551} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:17 Step:2551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2554} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2557} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:17 Step:2557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2560} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2564} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2567} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:18 Step:2567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2569} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:18 Step:2569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2572} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2575} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:18 Step:2575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2578} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2582} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2583} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2585} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:18 Step:2585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2588} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2593} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:18 Step:2593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2595} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2677} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2683} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2686} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2686} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2689} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2689} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2693} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2695} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2705} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:21 Step:2705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2708} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:21 Step:2709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2712} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:21 Step:2713} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2715} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:21 Step:2715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2717} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:21 Step:2717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2751} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2753} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2753} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2755} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2757} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2759} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2761} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2764} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2769} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2771} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2793} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:2793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2798} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:2799} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2801} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2801} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2804} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:2805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2807} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2807} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2809} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2814} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:2815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2818} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:2819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2822} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:2822} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:23 Step:2831} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2833} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2836} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:2837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2839} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2842} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:24 Step:2843} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2845} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:24 Step:2845} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2847} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:24 Step:2847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2849} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:24 Step:2849} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2852} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:24 Step:2855} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2857} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:24 Step:2857} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2860} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2897} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2899} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2902} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2911} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2914} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2917} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2919} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2921} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2924} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2927} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2929} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2929} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2932} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2936} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:26 Step:2937} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:2939} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:2939} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:2941} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:2941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:2943} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:2943} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:2946} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:26 Step:2957} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:2959} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:2959} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:2961} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:2961} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:2964} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:26 Step:2979} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:2981} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:2981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:2983} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:2983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:2985} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:2985} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:2987} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:2987} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:2989} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:2989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:2991} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3039} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3039} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3042} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:28 Step:3043} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3045} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3051} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3054} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:28 Step:3055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3057} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3057} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3059} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3059} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3061} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3061} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3065} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:28 Step:3065} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3069} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:28 Step:3077} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3080} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:29 Step:3081} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3084} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:29 Step:3087} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3090} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:29 Step:3091} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3094} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:30 Step:3131} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3133} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3135} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3135} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3137} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3137} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3139} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3139} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3141} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3141} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3143} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3143} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3145} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3145} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3148} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:30 Step:3149} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3151} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3151} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3154} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:30 Step:3155} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3157} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3157} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3159} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3159} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3162} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:30 Step:3163} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3165} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3165} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3168} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:30 Step:3169} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3171} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3171} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3174} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3259} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:32 Step:3259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3262} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3265} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3267} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3277} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3280} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:33 Step:3281} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3285} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:33 Step:3285} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3288} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:33 Step:3289} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3292} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:33 Step:3293} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3296} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:33 Step:3297} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3299} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3299} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3302} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:33 Step:3303} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3305} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3305} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3309} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:33 Step:3309} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3312} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:33 Step:3312} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3313} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3314} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 700.88))(GS (sl 0) (sr 0) (t 365.88) (pm PlayOn))(foul 7)(GYR (n torso) (rt -71.23 42.17 -192.57))(ACC (n torso) (a 0.63 3.74 -7.41))(HJ (n hj1) (ax -76.99))(HJ (n hj2) (ax -49.48))(HJ (n raj1) (ax -29.68))(HJ (n raj2) (ax -2.12))(HJ (n raj3) (ax 116.00))(HJ (n raj4) (ax 95.91))(HJ (n laj1) (ax -120.02))(HJ (n laj2) (ax 3.14))(HJ (n laj3) (ax -115.71))(HJ (n laj4) (ax -87.58))(HJ (n rlj1) (ax -10.68))(HJ (n rlj2) (ax 21.59))(HJ (n rlj3) (ax -20.25))(HJ (n rlj4) (ax -130.00))(HJ (n rlj5) (ax 69.45))(HJ (n rlj6) (ax 45.14))(HJ (n llj1) (ax -77.03))(HJ (n llj2) (ax 43.35))(HJ (n llj3) (ax 91.45))(HJ (n llj4) (ax -136.98))(HJ (n llj5) (ax 77.27))(HJ (n llj6) (ax -51.29)) +{Tue 20:37:33 Step:3316} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:33 Step:3317} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3319} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3319} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3322} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3323} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3326} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3327} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3330} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3334} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3335} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3337} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:34 Step:3337} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3341} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3341} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3344} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3345} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3348} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:35 Step:3409} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3411} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3414} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:35 Step:3415} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 702.90))(GS (sl 0) (sr 0) (t 367.90) (pm PlayOn))(foul 7)(GYR (n torso) (rt -3.80 13.77 -23.95))(ACC (n torso) (a 0.66 5.45 3.06))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax 0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.15 -29.87 0.51)) (llowerarm (pol 0.15 31.33 0.47)) (rfoot (pol 0.44 -3.81 -58.60)) (lfoot (pol 0.44 4.59 -58.69))) (G2R (pol 25.88 31.36 -34.11)) (G1R (pol 25.80 36.64 -32.50)) (F1R (pol 27.35 57.16 -25.41)) (F2R (pol 28.00 9.11 -39.53)) (B (pol 2.04 3.52 -45.18)) (mypos -10.81 0.94 0.25) (myorien -30.86) (ballpos -9.00 0.00 0.04) (L (pol 15.37 -19.52 -38.01) (pol 11.66 59.94 -24.56)) (L (pol 28.00 9.31 -39.24) (pol 27.40 57.26 -25.23)) (L (pol 27.32 57.16 -25.53) (pol 23.83 59.93 -23.82)) (L (pol 28.04 9.11 -39.62) (pol 11.01 -60.03 -22.84)) (L (pol 24.09 42.58 -32.22) (pol 24.32 25.92 -37.26)) (L (pol 24.11 42.60 -32.53) (pol 25.89 42.29 -32.43)) (L (pol 24.34 26.29 -37.40) (pol 26.12 26.90 -37.11)) (L (pol 12.79 32.44 -36.34) (pol 12.44 38.67 -34.33)) (L (pol 12.42 38.78 -34.50) (pol 11.48 42.76 -33.16)) (L (pol 11.46 42.77 -33.03) (pol 10.23 43.38 -32.88)) (L (pol 10.26 43.54 -32.91) (pol 9.18 39.34 -34.69)) (L (pol 9.20 39.51 -34.55) (pol 8.88 30.59 -37.28)) (L (pol 8.86 30.43 -37.34) (pol 9.43 22.54 -38.94)) (L (pol 9.45 22.27 -39.05) (pol 10.60 18.90 -39.41)) (L (pol 10.58 18.80 -39.28) (pol 11.78 20.67 -39.26)) (L (pol 11.77 20.66 -38.90) (pol 12.62 25.99 -38.01)) (L (pol 12.61 25.97 -37.89) (pol 12.84 32.66 -36.24)))(HJ (n raj1) (ax 8.33))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 69.22))(HJ (n raj4) (ax 83.93))(HJ (n laj1) (ax 8.34))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax -69.22))(HJ (n laj4) (ax -83.92))(HJ (n rlj1) (ax -40.62))(HJ (n rlj2) (ax 26.04))(HJ (n rlj3) (ax 14.61))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax 52.91))(HJ (n rlj6) (ax 47.30))(HJ (n llj1) (ax -40.13))(HJ (n llj2) (ax -26.07))(HJ (n llj3) (ax 14.52))(HJ (n llj4) (ax 0.99))(HJ (n llj5) (ax 52.93))(HJ (n llj6) (ax -47.25)) +{Tue 20:37:35 Step:3415} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3417} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:35 Step:3417} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3420} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3421} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3423} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3427} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 703.14))(GS (sl 0) (sr 0) (t 368.14) (pm PlayOn))(foul 7)(GYR (n torso) (rt 17.62 4.47 -14.06))(ACC (n torso) (a 0.61 12.52 17.57))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax 0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.11 -20.34 28.23)) (llowerarm (pol 0.11 23.09 27.85)) (lfoot (pol 0.31 47.10 -18.20))) (G2R (pol 25.91 29.56 -36.59)) (G1R (pol 25.84 34.70 -34.81)) (F1R (pol 27.34 55.22 -27.11)) (F2R (pol 28.00 6.50 -42.69)) (B (pol 2.06 1.21 -47.97)) (mypos -10.82 0.93 0.24) (myorien -26.33) (ballpos -9.00 0.00 0.04) (L (pol 15.37 -23.93 -41.54) (pol 11.87 59.87 -24.70)) (L (pol 28.00 6.42 -42.90) (pol 27.37 55.18 -27.06)) (L (pol 27.31 55.50 -27.09) (pol 21.77 59.81 -24.12)) (L (pol 28.03 6.60 -42.73) (pol 11.17 -60.02 -27.59)) (L (pol 24.13 40.74 -34.53) (pol 24.32 24.37 -39.98)) (L (pol 24.10 40.79 -34.32) (pol 25.88 40.37 -34.49)) (L (pol 24.31 24.50 -40.01) (pol 26.12 25.29 -39.76)) (L (pol 12.85 30.62 -38.71) (pol 12.42 37.01 -36.77)) (L (pol 12.44 37.15 -36.67) (pol 11.49 40.94 -35.16)) (L (pol 11.48 40.91 -35.20) (pol 10.25 41.75 -35.01)) (L (pol 10.27 41.83 -35.32) (pol 9.22 37.97 -36.86)) (L (pol 9.20 37.83 -37.03) (pol 8.86 29.25 -39.99)) (L (pol 8.87 28.83 -39.83) (pol 9.45 20.20 -41.83)) (L (pol 9.43 20.33 -42.02) (pol 10.59 16.49 -42.13)) (L (pol 10.60 16.26 -42.02) (pol 11.80 18.54 -41.90)) (L (pol 11.78 18.64 -41.97) (pol 12.61 24.37 -40.52)) (L (pol 12.60 24.18 -40.76) (pol 12.85 30.98 -38.80)))(HJ (n raj1) (ax 48.07))(HJ (n raj2) (ax 7.98))(HJ (n raj3) (ax 13.50))(HJ (n raj4) (ax 55.71))(HJ (n laj1) (ax 48.07))(HJ (n laj2) (ax -8.01))(HJ (n laj3) (ax -13.52))(HJ (n laj4) (ax -55.70))(HJ (n rlj1) (ax -36.56))(HJ (n rlj2) (ax 24.11))(HJ (n rlj3) (ax 14.60))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax 52.91))(HJ (n rlj6) (ax 43.63))(HJ (n llj1) (ax -52.22))(HJ (n llj2) (ax -4.78))(HJ (n llj3) (ax 89.94))(HJ (n llj4) (ax -5.98))(HJ (n llj5) (ax -30.94))(HJ (n llj6) (ax -41.42)) +{Tue 20:37:36 Step:3429} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3431} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3431} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3434} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3435} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3437} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:38 Step:3517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3519} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:38 Step:3519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3522} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:38 Step:3523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3525} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:38 Step:3525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3527} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:38 Step:3527} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3529} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 705.19))(GS (sl 0) (sr 0) (t 370.18) (pm PlayOn))(foul 7)(GYR (n torso) (rt 234.09 -3.00 40.56))(ACC (n torso) (a 0.73 10.01 5.16))(HJ (n hj1) (ax -0.18))(HJ (n hj2) (ax -0.18))(See (P (team Gym) (id 1) (llowerarm (pol 0.11 36.58 21.37))) (G2R (pol 25.94 -3.77 -43.24)) (G1R (pol 25.89 2.79 -43.09)) (F1R (pol 27.43 28.36 -40.43)) (F2R (pol 28.02 -29.01 -42.07)) (B (pol 2.09 -34.76 -45.98)) (mypos -10.88 0.90 0.25) (myorien 0.61) (ballpos -9.00 0.00 0.04) (L (pol 15.40 -54.81 -32.96) (pol 14.18 50.76 -30.98)) (L (pol 28.09 -29.11 -42.06) (pol 27.38 28.42 -40.48)) (L (pol 27.45 28.33 -40.45) (pol 11.91 60.20 -25.33)) (L (pol 28.05 -28.70 -42.26) (pol 14.10 -60.35 -29.67)) (L (pol 24.16 9.67 -44.51) (pol 24.39 -10.47 -44.85)) (L (pol 24.16 9.34 -44.31) (pol 25.98 8.99 -44.43)) (L (pol 24.41 -10.72 -44.86) (pol 26.17 -9.36 -45.20)) (L (pol 12.90 -3.08 -45.57) (pol 12.50 4.41 -45.33)) (L (pol 12.50 4.11 -45.64) (pol 11.53 9.61 -45.27)) (L (pol 11.54 9.90 -45.12) (pol 10.31 10.64 -45.15)) (L (pol 10.31 10.68 -45.25) (pol 9.25 5.06 -45.83)) (L (pol 9.27 5.08 -45.94) (pol 8.93 -5.85 -45.99)) (L (pol 8.93 -5.71 -46.02) (pol 9.51 -15.49 -45.36)) (L (pol 9.49 -15.61 -45.47) (pol 10.65 -19.11 -44.94)) (L (pol 10.64 -18.87 -44.77) (pol 11.82 -17.09 -45.17)) (L (pol 11.82 -16.68 -45.00) (pol 12.67 -10.96 -45.63)) (L (pol 12.67 -10.86 -45.49) (pol 12.94 -3.31 -45.88)))(HJ (n raj1) (ax 36.33))(HJ (n raj2) (ax -40.99))(HJ (n raj3) (ax 47.51))(HJ (n raj4) (ax 95.76))(HJ (n laj1) (ax 36.33))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax -47.71))(HJ (n laj4) (ax -90.10))(HJ (n rlj1) (ax -36.19))(HJ (n rlj2) (ax 20.97))(HJ (n rlj3) (ax 3.11))(HJ (n rlj4) (ax 1.01))(HJ (n rlj5) (ax 69.43))(HJ (n rlj6) (ax 47.26))(HJ (n llj1) (ax -36.60))(HJ (n llj2) (ax -21.44))(HJ (n llj3) (ax 3.12))(HJ (n llj4) (ax 1.00))(HJ (n llj5) (ax 69.14))(HJ (n llj6) (ax -47.24)) +{Tue 20:37:38 Step:3529} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:38 Step:3529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3532} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3619} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3622} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3625} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3627} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3627} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3629} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3629} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3632} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3633} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3637} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3639} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3639} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3641} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3644} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3649} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3652} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3655} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3662} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:41 Step:3663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3665} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3665} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3667} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3670} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:41 Step:3670} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:41 Step:3671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3673} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3675} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3678} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:41 Step:3679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3681} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3683} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3685} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3687} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3689} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3689} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3692} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3749} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3753} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3753} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3755} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3761} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3764} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3767} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3770} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3774} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3780} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3814} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:45 Step:3857} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3859} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3859} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3862} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:45 Step:3863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3865} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3865} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3867} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3869} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3869} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:45 Step:3870} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 712.01))(GS (sl 0) (sr 0) (t 376.99) (pm PlayOn))(foul 7)(GYR (n torso) (rt 274.41 -64.76 182.29))(ACC (n torso) (a -4.62 -5.23 -3.60))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.15))(HJ (n raj1) (ax -14.47))(HJ (n raj2) (ax 2.95))(HJ (n raj3) (ax 14.17))(HJ (n raj4) (ax -0.98))(HJ (n laj1) (ax -12.27))(HJ (n laj2) (ax 6.86))(HJ (n laj3) (ax -14.55))(HJ (n laj4) (ax 1.00))(HJ (n rlj1) (ax -72.10))(HJ (n rlj2) (ax 17.80))(HJ (n rlj3) (ax 26.45))(HJ (n rlj4) (ax -115.63))(HJ (n rlj5) (ax 17.11))(HJ (n rlj6) (ax -5.37))(HJ (n llj1) (ax -72.03))(HJ (n llj2) (ax -17.82))(HJ (n llj3) (ax 26.43))(HJ (n llj4) (ax -115.60))(HJ (n llj5) (ax 17.15))(HJ (n llj6) (ax 5.47)) +{Tue 20:37:47 Step:3971} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3973} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:47 Step:3973} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3975} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:47 Step:3983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3985} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:49 Step:4071} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4095} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4097} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4097} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4101} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4101} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4104} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4105} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4108} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4109} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4112} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4115} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4118} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:51 Step:4151} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4153} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4153} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4155} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4155} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4157} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4159} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4161} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4161} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4163} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4163} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4164} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4183} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4186} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:52 Step:4187} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4189} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4189} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4191} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4191} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4193} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4193} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4196} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:52 Step:4197} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4199} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 718.60))(GS (sl 0) (sr 0) (t 383.57) (pm PlayOn))(foul 7)(GYR (n torso) (rt -155.12 171.54 -32.75))(ACC (n torso) (a -2.37 -9.49 -3.28))(HJ (n hj1) (ax -13.78))(HJ (n hj2) (ax -14.11))(See (P (team Gym) (id 1) (rfoot (pol 0.46 -28.92 -54.50))) (G2R (pol 25.20 -9.59 55.74)) (G1R (pol 25.06 -1.06 57.06)) (F1R (pol 26.61 34.24 54.96)) (F2R (pol 27.38 -33.89 44.60)) (B (pol 1.56 -41.26 20.11)) (mypos -10.06 1.07 0.43) (myorien -17.96) (ballpos -9.00 0.00 0.04) (L (pol 14.97 -53.94 26.74) (pol 11.17 43.20 51.65)) (L (pol 27.40 -33.94 44.47) (pol 26.62 34.20 54.93)) (L (pol 26.61 34.16 55.07) (pol 25.80 35.61 54.47)) (L (pol 27.47 -34.11 44.43) (pol 13.10 -60.03 18.39)) (L (pol 23.31 7.92 56.10) (pol 23.64 -16.20 52.05)) (L (pol 23.33 7.89 55.89) (pol 25.13 7.44 56.11)) (L (pol 23.60 -16.13 52.20) (pol 25.38 -15.20 52.36)) (L (pol 12.11 -8.13 53.05) (pol 11.68 0.93 54.10)) (L (pol 11.68 0.69 54.43) (pol 10.74 7.68 54.89)) (L (pol 10.72 7.62 54.93) (pol 9.51 8.66 54.48)) (L (pol 9.50 8.89 54.68) (pol 8.46 1.56 53.67)) (L (pol 8.45 1.70 53.87) (pol 8.15 -11.38 51.11)) (L (pol 8.14 -11.27 51.17) (pol 8.76 -21.88 48.19)) (L (pol 8.75 -21.62 48.11) (pol 9.92 -25.24 47.14)) (L (pol 9.92 -25.14 47.07) (pol 11.07 -22.81 48.01)) (L (pol 11.11 -22.92 48.10) (pol 11.91 -16.92 50.60)) (L (pol 11.89 -16.69 50.55) (pol 12.11 -8.25 52.98)))(HJ (n raj1) (ax -120.92))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 84.04))(HJ (n raj4) (ax 64.97))(HJ (n laj1) (ax -120.82))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax -84.30))(HJ (n laj4) (ax -65.18))(HJ (n rlj1) (ax -66.55))(HJ (n rlj2) (ax -11.11))(HJ (n rlj3) (ax 27.64))(HJ (n rlj4) (ax -86.33))(HJ (n rlj5) (ax 78.18))(HJ (n rlj6) (ax 6.36))(HJ (n llj1) (ax -13.11))(HJ (n llj2) (ax 10.73))(HJ (n llj3) (ax 29.12))(HJ (n llj4) (ax -89.02))(HJ (n llj5) (ax 50.94))(HJ (n llj6) (ax -6.76)) +{Tue 20:37:52 Step:4199} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4201} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4205} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4207} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4207} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4209} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4209} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4211} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4211} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4214} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:52 Step:4215} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4217} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4220} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:53 Step:4255} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4257} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4260} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4263} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:54 Step:4263} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4266} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4269} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4271} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4317} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4319} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4319} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4325} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4325} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4327} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4335} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4337} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4339} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4343} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4343} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4346} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4347} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4349} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4349} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4352} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4353} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4357} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4357} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4359} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4359} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4362} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4365} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4367} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4367} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4370} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4373} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4373} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4375} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4375} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4376} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 722.14))(GS (sl 0) (sr 0) (t 387.11) (pm PlayOn))(foul 7)(GYR (n torso) (rt 214.66 80.05 202.52))(ACC (n torso) (a -7.33 14.81 6.92))(HJ (n hj1) (ax -20.78))(HJ (n hj2) (ax -48.75))(HJ (n raj1) (ax -67.69))(HJ (n raj2) (ax -5.08))(HJ (n raj3) (ax 115.44))(HJ (n raj4) (ax 69.21))(HJ (n laj1) (ax -116.65))(HJ (n laj2) (ax 2.30))(HJ (n laj3) (ax -114.64))(HJ (n laj4) (ax -67.75))(HJ (n rlj1) (ax -0.91))(HJ (n rlj2) (ax 22.26))(HJ (n rlj3) (ax 31.28))(HJ (n rlj4) (ax -87.49))(HJ (n rlj5) (ax 39.42))(FRP (n rf) (c 0.04 -0.09 -0.00) (f 1.89 -24.20 60.35))(HJ (n rlj6) (ax -23.65))(HJ (n llj1) (ax -0.50))(HJ (n llj2) (ax -26.06))(HJ (n llj3) (ax 27.09))(HJ (n llj4) (ax -78.88))(HJ (n llj5) (ax 24.01))(HJ (n llj6) (ax 23.09)) +{Tue 20:37:56 Step:4377} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4377} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4380} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4381} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4383} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4383} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4387} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:57 Step:4419} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4421} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4425} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4427} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4430} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:58 Step:4481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4484} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:58 Step:4485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4488} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4493} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4497} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4500} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4501} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4503} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4503} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4505} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4505} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4508} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4513} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4517} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4521} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4523} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4525} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4529} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4532} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4535} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4538} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4544} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4595} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:01 Step:4597} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4600} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4601} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4604} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4614} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4620} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4623} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4626} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4627} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4630} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4631} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4633} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4633} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4636} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4637} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4640} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4641} World_Parser.py: Received field line with NaNs [ nan nan nan 10.64 3.1 60.08] +{Tue 20:38:02 Step:4646} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 727.55))(GS (sl 0) (sr 0) (t 392.50) (pm PlayOn))(foul 7)(GYR (n torso) (rt 33.29 -169.01 -168.70))(ACC (n torso) (a 1.16 0.82 4.54))(HJ (n hj1) (ax -7.03))(HJ (n hj2) (ax -34.97))(HJ (n raj1) (ax -82.65))(HJ (n raj2) (ax -6.22))(HJ (n raj3) (ax 90.03))(HJ (n raj4) (ax 46.56))(HJ (n laj1) (ax -83.59))(HJ (n laj2) (ax 8.82))(HJ (n laj3) (ax -90.01))(HJ (n laj4) (ax -49.33))(HJ (n rlj1) (ax -57.27))(HJ (n rlj2) (ax -18.87))(HJ (n rlj3) (ax 71.74))(HJ (n rlj4) (ax -99.83))(HJ (n rlj5) (ax -16.99))(FRP (n rf) (c -0.04 0.09 -0.01) (f 40.80 40.15 19.36))(HJ (n rlj6) (ax 3.08))(HJ (n llj1) (ax -76.68))(HJ (n llj2) (ax -2.14))(HJ (n llj3) (ax 71.26))(HJ (n llj4) (ax -88.15))(HJ (n llj5) (ax -17.27))(FRP (n lf) (c 0.01 0.09 -0.02) (f -68.97 16.51 68.73))(HJ (n llj6) (ax 2.03)) +{Tue 20:38:02 Step:4648} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 727.59))(GS (sl 0) (sr 0) (t 392.54) (pm PlayOn))(foul 7)(GYR (n torso) (rt 101.64 149.03 139.75))(ACC (n torso) (a 1.29 -1.44 -5.62))(HJ (n hj1) (ax 5.96))(HJ (n hj2) (ax -35.01))(HJ (n raj1) (ax -82.65))(HJ (n raj2) (ax -6.21))(HJ (n raj3) (ax 90.02))(HJ (n raj4) (ax 46.54))(HJ (n laj1) (ax -84.96))(HJ (n laj2) (ax 8.47))(HJ (n laj3) (ax -90.00))(HJ (n laj4) (ax -63.36))(HJ (n rlj1) (ax -57.27))(HJ (n rlj2) (ax -18.84))(HJ (n rlj3) (ax 71.73))(HJ (n rlj4) (ax -99.82))(HJ (n rlj5) (ax -16.96))(HJ (n rlj6) (ax 3.07))(HJ (n llj1) (ax -71.71))(HJ (n llj2) (ax -0.67))(HJ (n llj3) (ax 62.03))(HJ (n llj4) (ax -87.36))(HJ (n llj5) (ax -3.30))(FRP (n lf) (c 0.04 0.08 -0.01) (f -14.13 17.98 31.14))(HJ (n llj6) (ax -0.38)) +{Tue 20:38:03 Step:4673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4675} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4678} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4681} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4685} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4688} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4705} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4707} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4709} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4711} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4711} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4714} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4721} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4721} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4724} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4725} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4727} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4729} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4729} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4732} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4733} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4735} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4737} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4740} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4777} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4779} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4779} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4781} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4782} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4785} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4788} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4791} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4793} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4795} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4873} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4876} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4879} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4879} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4882} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4898} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4898} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:07 Step:4899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4903} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4904} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 732.71))(GS (sl 0) (sr 0) (t 397.66) (pm PlayOn))(foul 7)(GYR (n torso) (rt -42.95 -27.00 -27.04))(ACC (n torso) (a -1.12 -5.17 4.33))(HJ (n hj1) (ax 0.05))(HJ (n hj2) (ax 0.04))(HJ (n raj1) (ax -72.22))(HJ (n raj2) (ax 0.97))(HJ (n raj3) (ax 39.88))(HJ (n raj4) (ax 86.18))(HJ (n laj1) (ax -72.22))(HJ (n laj2) (ax -0.99))(HJ (n laj3) (ax -40.05))(HJ (n laj4) (ax -86.25))(HJ (n rlj1) (ax -36.98))(HJ (n rlj2) (ax -33.31))(HJ (n rlj3) (ax 99.99))(HJ (n rlj4) (ax -110.75))(HJ (n rlj5) (ax 49.81))(FRP (n rf) (c 0.04 -0.08 -0.01) (f 36.16 -22.36 19.34))(HJ (n rlj6) (ax 44.99))(HJ (n llj1) (ax -27.91))(HJ (n llj2) (ax 33.31))(HJ (n llj3) (ax 99.99))(HJ (n llj4) (ax -110.65))(HJ (n llj5) (ax 49.82))(FRP (n lf) (c 0.04 0.08 -0.01) (f -44.14 12.79 23.93))(HJ (n llj6) (ax -44.97)) +{Tue 20:38:07 Step:4905} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 732.73))(GS (sl 0) (sr 0) (t 397.68) (pm PlayOn))(foul 7)(GYR (n torso) (rt -59.40 -39.00 -23.96))(ACC (n torso) (a -1.88 -8.38 6.97))(HJ (n hj1) (ax 0.06))(HJ (n hj2) (ax 0.05))(See (P (team Gym) (id 1) (rfoot (pol 0.36 -46.02 -53.62)) (lfoot (pol 0.37 42.52 -55.01))) (G2R (pol 24.91 26.62 53.74)) (G1R (pol 24.83 33.89 51.57)) (F1R (pol 26.42 54.68 37.53)) (F2R (pol 27.13 -6.73 55.83)) (B (pol 1.24 -39.10 37.13)) (mypos -9.77 0.94 0.30) (myorien -15.44) (ballpos -9.00 0.00 0.04) (L (pol 14.66 -44.30 47.43) (pol 11.06 59.99 31.27)) (L (pol 27.07 -6.83 55.77) (pol 26.35 54.29 37.74)) (L (pol 26.37 54.29 37.65) (pol 19.96 59.99 32.68)) (L (pol 27.04 -6.81 55.86) (pol 12.25 -59.96 38.11)) (L (pol 23.00 38.60 47.22) (pol 23.36 17.56 53.81)) (L (pol 23.07 38.66 47.21) (pol 24.87 38.09 47.50)) (L (pol 23.29 17.74 53.72) (pol 25.07 18.72 53.73)) (L (pol 11.83 25.09 51.27) (pol 11.43 32.91 48.74)) (L (pol 11.40 33.18 48.42) (pol 10.43 38.04 46.46)) (L (pol 10.45 37.96 46.56) (pol 9.22 38.81 45.71)) (L (pol 9.21 38.85 45.69) (pol 8.17 33.28 47.88)) (L (pol 8.16 33.35 47.73) (pol 7.84 21.12 51.26)) (L (pol 7.84 21.23 51.59) (pol 8.43 9.03 53.66)) (L (pol 8.42 9.34 53.55) (pol 9.61 4.88 54.30)) (L (pol 9.60 4.54 54.20) (pol 10.78 7.99 54.14)) (L (pol 10.77 7.77 54.42) (pol 11.60 15.92 53.16)) (L (pol 11.59 15.72 53.26) (pol 11.84 25.20 51.48)))(HJ (n raj1) (ax -77.08))(HJ (n raj2) (ax 1.47))(HJ (n raj3) (ax 42.94))(HJ (n raj4) (ax 93.20))(HJ (n laj1) (ax -77.08))(HJ (n laj2) (ax -0.99))(HJ (n laj3) (ax -43.14))(HJ (n laj4) (ax -93.26))(HJ (n rlj1) (ax -34.46))(HJ (n rlj2) (ax -32.47))(HJ (n rlj3) (ax 99.99))(HJ (n rlj4) (ax -108.78))(HJ (n rlj5) (ax 50.28))(FRP (n rf) (c 0.04 -0.08 -0.01) (f 28.54 -14.80 26.77))(HJ (n rlj6) (ax 45.00))(HJ (n llj1) (ax -27.75))(HJ (n llj2) (ax 32.47))(HJ (n llj3) (ax 99.99))(HJ (n llj4) (ax -108.66))(HJ (n llj5) (ax 50.29))(FRP (n lf) (c -0.01 0.08 -0.01) (f -29.85 10.21 31.35))(HJ (n llj6) (ax -44.97)) +{Tue 20:38:07 Step:4908} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4908} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4912} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4915} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:08 Step:4953} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4955} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:08 Step:4955} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4957} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:08 Step:4957} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4959} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4959} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4961} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4961} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4963} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4963} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4965} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4965} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4967} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4967} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4969} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4969} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4971} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4971} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4973} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4973} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4977} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:4977} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4980} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:4981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4983} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4986} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:4987} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4989} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4991} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4991} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4994} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:4995} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4997} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:5001} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:5001} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:5004} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:5005} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:5007} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:10 Step:5007} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:5011} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:5011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:5014} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:5015} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:5018} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:5019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:5021} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:10 Step:5021} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:5024} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:5025} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:5027} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:10 Step:5027} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:5031} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:5031} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:5034} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:5035} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:5038} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:5039} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:5043} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5067} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5069} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:5069} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5071} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:5071} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5074} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5075} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5077} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:5077} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5080} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5081} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5083} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:5083} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5085} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:5085} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5088} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5089} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5091} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:5091} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5095} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5095} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5097} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5097} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5099} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5103} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5105} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5105} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5108} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:12 Step:5109} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5111} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5111} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5114} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:12 Step:5115} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5117} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5120} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:12 Step:5121} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5123} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5123} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5125} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5125} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5127} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5136} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:12 Step:5137} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5139} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5139} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5142} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:13 Step:5145} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5147} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:5147} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:13 Step:5149} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5151} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:5151} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5153} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:5153} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5155} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:5157} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5159} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:5159} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5161} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:5161} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5163} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:5163} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5166} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:13 Step:5167} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5169} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:14 Step:5203} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5205} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:14 Step:5205} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5207} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:14 Step:5207} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5210} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5211} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5214} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5223} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5226} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5227} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5230} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5231} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5233} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:14 Step:5233} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5236} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5237} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5241} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5241} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5245} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5248} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5249} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 739.62))(GS (sl 0) (sr 0) (t 404.56) (pm PlayOn))(foul 7)(foul 7)(GYR (n torso) (rt 48.61 -13.99 16.40))(ACC (n torso) (a 1.29 -2.03 4.94))(HJ (n hj1) (ax 28.07))(HJ (n hj2) (ax -28.04))(See (P (team Gym) (id 1) (llowerarm (pol 0.26 22.89 -51.50)) (lfoot (pol 0.52 20.17 -55.79))) (G2R (pol 25.11 37.69 34.06)) (G1R (pol 24.97 41.70 30.64)) (F1R (pol 26.63 56.04 15.80)) (F2R (pol 27.32 15.66 42.33)) (B (pol 1.42 -10.42 29.27)) (mypos -10.02 0.87 0.51) (myorien -21.27) (ballpos -9.00 0.00 0.04) (L (pol 14.81 -17.48 46.91) (pol 11.28 60.33 9.37)) (L (pol 27.25 15.51 42.57) (pol 26.66 56.08 15.98)) (L (pol 26.62 55.96 15.98) (pol 20.81 60.13 11.49)) (L (pol 27.30 15.85 42.25) (pol 11.07 -60.12 37.45)) (L (pol 23.32 44.58 26.12) (pol 23.56 31.08 35.44)) (L (pol 23.30 44.77 26.29) (pol 25.15 44.32 26.48)) (L (pol 23.55 31.43 35.37) (pol 25.32 31.84 35.12)) (L (pol 12.04 35.74 31.21) (pol 11.65 40.49 27.74)) (L (pol 11.66 40.44 27.82) (pol 10.71 44.10 24.60)) (L (pol 10.71 43.61 25.04) (pol 9.49 44.26 24.18)) (L (pol 9.47 44.41 24.42) (pol 8.42 40.57 26.48)) (L (pol 8.42 40.23 26.60) (pol 8.09 32.70 31.41)) (L (pol 8.08 32.83 31.31) (pol 8.66 25.55 35.99)) (L (pol 8.67 25.51 35.97) (pol 9.82 22.69 37.56)) (L (pol 9.82 22.80 37.61) (pol 11.01 24.89 37.01)) (L (pol 11.00 25.12 37.04) (pol 11.83 30.07 34.81)) (L (pol 11.83 29.74 34.60) (pol 12.08 35.51 31.32)))(HJ (n raj1) (ax -103.63))(HJ (n raj2) (ax -3.66))(HJ (n raj3) (ax 52.30))(HJ (n raj4) (ax 51.63))(HJ (n laj1) (ax -105.88))(HJ (n laj2) (ax 1.71))(HJ (n laj3) (ax -52.35))(HJ (n laj4) (ax -51.68))(HJ (n rlj1) (ax -24.00))(HJ (n rlj2) (ax -20.40))(HJ (n rlj3) (ax 13.42))(HJ (n rlj4) (ax -75.54))(HJ (n rlj5) (ax 45.31))(FRP (n rf) (c -0.04 0.08 -0.01) (f 40.11 13.38 3.66))(HJ (n rlj6) (ax 9.95))(HJ (n llj1) (ax -24.00))(HJ (n llj2) (ax 17.49))(HJ (n llj3) (ax 13.48))(HJ (n llj4) (ax -75.25))(HJ (n llj5) (ax 43.04))(FRP (n lf) (c 0.04 0.08 -0.01) (f -39.05 10.23 14.51))(HJ (n llj6) (ax -9.99)) +{Tue 20:38:15 Step:5249} World_Parser.py: Unknown root tag: bytearray(b'foul') at 73, +Msg: (time (now 739.62))(GS (sl 0) (sr 0) (t 404.56) (pm PlayOn))(foul 7)(foul 7)(GYR (n torso) (rt 48.61 -13.99 16.40))(ACC (n torso) (a 1.29 -2.03 4.94))(HJ (n hj1) (ax 28.07))(HJ (n hj2) (ax -28.04))(See (P (team Gym) (id 1) (llowerarm (pol 0.26 22.89 -51.50)) (lfoot (pol 0.52 20.17 -55.79))) (G2R (pol 25.11 37.69 34.06)) (G1R (pol 24.97 41.70 30.64)) (F1R (pol 26.63 56.04 15.80)) (F2R (pol 27.32 15.66 42.33)) (B (pol 1.42 -10.42 29.27)) (mypos -10.02 0.87 0.51) (myorien -21.27) (ballpos -9.00 0.00 0.04) (L (pol 14.81 -17.48 46.91) (pol 11.28 60.33 9.37)) (L (pol 27.25 15.51 42.57) (pol 26.66 56.08 15.98)) (L (pol 26.62 55.96 15.98) (pol 20.81 60.13 11.49)) (L (pol 27.30 15.85 42.25) (pol 11.07 -60.12 37.45)) (L (pol 23.32 44.58 26.12) (pol 23.56 31.08 35.44)) (L (pol 23.30 44.77 26.29) (pol 25.15 44.32 26.48)) (L (pol 23.55 31.43 35.37) (pol 25.32 31.84 35.12)) (L (pol 12.04 35.74 31.21) (pol 11.65 40.49 27.74)) (L (pol 11.66 40.44 27.82) (pol 10.71 44.10 24.60)) (L (pol 10.71 43.61 25.04) (pol 9.49 44.26 24.18)) (L (pol 9.47 44.41 24.42) (pol 8.42 40.57 26.48)) (L (pol 8.42 40.23 26.60) (pol 8.09 32.70 31.41)) (L (pol 8.08 32.83 31.31) (pol 8.66 25.55 35.99)) (L (pol 8.67 25.51 35.97) (pol 9.82 22.69 37.56)) (L (pol 9.82 22.80 37.61) (pol 11.01 24.89 37.01)) (L (pol 11.00 25.12 37.04) (pol 11.83 30.07 34.81)) (L (pol 11.83 29.74 34.60) (pol 12.08 35.51 31.32)))(HJ (n raj1) (ax -103.63))(HJ (n raj2) (ax -3.66))(HJ (n raj3) (ax 52.30))(HJ (n raj4) (ax 51.63))(HJ (n laj1) (ax -105.88))(HJ (n laj2) (ax 1.71))(HJ (n laj3) (ax -52.35))(HJ (n laj4) (ax -51.68))(HJ (n rlj1) (ax -24.00))(HJ (n rlj2) (ax -20.40))(HJ (n rlj3) (ax 13.42))(HJ (n rlj4) (ax -75.54))(HJ (n rlj5) (ax 45.31))(FRP (n rf) (c -0.04 0.08 -0.01) (f 40.11 13.38 3.66))(HJ (n rlj6) (ax 9.95))(HJ (n llj1) (ax -24.00))(HJ (n llj2) (ax 17.49))(HJ (n llj3) (ax 13.48))(HJ (n llj4) (ax -75.25))(HJ (n llj5) (ax 43.04))(FRP (n lf) (c 0.04 0.08 -0.01) (f -39.05 10.23 14.51))(HJ (n llj6) (ax -9.99)) +{Tue 20:38:15 Step:5249} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5251} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:15 Step:5251} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5254} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5255} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5258} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5262} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5263} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5266} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5266} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:15 Step:5267} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5269} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:15 Step:5269} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5272} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5273} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5275} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:15 Step:5275} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5278} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5279} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5282} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5363} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5366} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5367} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5369} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5369} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5371} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5374} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5391} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5393} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5459} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5461} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5464} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:19 Step:5465} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5467} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5471} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5563} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5567} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5570} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 746.05))(GS (sl 0) (sr 0) (t 410.97) (pm PlayOn))(foul 7)(GYR (n torso) (rt -22.32 -7.94 -7.35))(ACC (n torso) (a 2.57 -2.50 8.30))(HJ (n hj1) (ax 0.02))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -82.11))(HJ (n raj2) (ax -0.10))(HJ (n raj3) (ax 45.90))(HJ (n raj4) (ax 89.88))(HJ (n laj1) (ax -82.00))(HJ (n laj2) (ax -1.04))(HJ (n laj3) (ax -45.76))(HJ (n laj4) (ax -89.81))(HJ (n rlj1) (ax -26.57))(HJ (n rlj2) (ax -31.57))(HJ (n rlj3) (ax 96.17))(HJ (n rlj4) (ax -106.80))(HJ (n rlj5) (ax 50.79))(FRP (n rf) (c 0.04 -0.08 -0.01) (f 36.50 -14.42 31.47))(HJ (n rlj6) (ax 45.11))(HJ (n llj1) (ax -21.50))(HJ (n llj2) (ax 31.65))(HJ (n llj3) (ax 92.73))(HJ (n llj4) (ax -107.02))(HJ (n llj5) (ax 50.79))(FRP (n lf) (c -0.04 0.06 -0.01) (f -51.84 10.07 22.24))(HJ (n llj6) (ax -44.88)) +{Tue 20:38:21 Step:5570} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5573} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5576} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5579} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5583} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5583} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5585} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5588} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5591} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5595} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5597} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5601} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5601} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5603} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5605} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5605} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5609} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5611} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5614} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5617} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5620} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5623} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5625} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5627} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 747.19))(GS (sl 0) (sr 0) (t 412.11) (pm PlayOn))(foul 7)(GYR (n torso) (rt -63.17 -187.57 55.47))(ACC (n torso) (a 13.85 -11.91 2.17))(HJ (n hj1) (ax 1.19))(HJ (n hj2) (ax 12.86))(See (P (team Gym) (id 1) (lfoot (pol 0.36 50.56 -39.53))) (mypos -10.47 0.34 0.29) (myorien -164.10) (ballpos -9.00 0.00 0.04) (L (pol 2.90 -59.74 41.22) (pol 2.91 -60.29 40.87)))(HJ (n raj1) (ax -88.03))(HJ (n raj2) (ax -0.09))(HJ (n raj3) (ax 64.50))(HJ (n raj4) (ax 55.88))(HJ (n laj1) (ax -52.26))(HJ (n laj2) (ax 30.10))(HJ (n laj3) (ax -123.95))(HJ (n laj4) (ax -3.34))(HJ (n rlj1) (ax -16.53))(HJ (n rlj2) (ax -19.04))(HJ (n rlj3) (ax 66.09))(HJ (n rlj4) (ax -66.17))(HJ (n rlj5) (ax 31.97))(FRP (n rf) (c 0.04 0.08 -0.01) (f -9.95 15.65 33.95))(HJ (n rlj6) (ax 27.96))(HJ (n llj1) (ax -91.32))(HJ (n llj2) (ax -25.18))(HJ (n llj3) (ax 49.01))(HJ (n llj4) (ax -34.30))(HJ (n llj5) (ax -14.70))(FRP (n lf) (c -0.05 -0.03 -0.01) (f -16.14 -34.45 48.18))(HJ (n llj6) (ax -48.72)) +{Tue 20:38:23 Step:5627} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5627} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5644} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5645} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5647} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5649} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5652} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5656} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5660} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5664} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5665} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5668} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5671} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:24 Step:5671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5674} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5678} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5678} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:24 Step:5679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5683} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5686} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5690} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5693} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:24 Step:5693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5697} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5700} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5704} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5708} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5711} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5711} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5714} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5718} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5722} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5723} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5726} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5729} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5729} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5733} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5733} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5736} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5740} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5741} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5743} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5746} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5750} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5754} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5758} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5793} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5795} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 750.55))(GS (sl 0) (sr 0) (t 415.47) (pm PlayOn))(foul 7)(GYR (n torso) (rt 175.95 -106.23 317.90))(ACC (n torso) (a -0.03 0.81 -2.09))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.24 -31.14 -27.59)) (llowerarm (pol 0.25 40.35 -25.62))) (G2R (pol 25.70 54.51 -45.71)) (G1R (pol 25.59 49.48 -49.05)) (F1R (pol 27.44 21.15 -58.82)) (B (pol 1.63 51.96 -38.99)) (mypos -10.61 0.20 0.16) (myorien 22.97) (ballpos -9.00 0.00 0.04) (L (pol 11.22 24.10 -57.74) (pol 10.87 60.19 -36.76)) (L (pol 26.29 33.10 -55.51) (pol 26.20 59.90 -37.72)) (L (pol 23.96 42.18 -51.11) (pol 24.03 56.59 -41.11)) (L (pol 23.97 42.14 -51.51) (pol 25.77 42.54 -51.28)) (L (pol 24.01 56.48 -41.05) (pol 25.86 56.02 -41.63)) (L (pol 12.63 49.98 -45.94) (pol 12.29 44.12 -49.64)) (L (pol 12.27 44.26 -49.62) (pol 11.36 39.37 -52.10)) (L (pol 11.37 39.43 -52.24) (pol 10.12 38.02 -52.85)) (L (pol 10.12 37.96 -52.88) (pol 9.04 42.01 -50.41)) (L (pol 9.04 42.17 -50.43) (pol 8.62 50.10 -45.22)) (L (pol 8.62 50.13 -45.29) (pol 9.11 56.54 -39.79)) (L (pol 9.11 56.80 -39.74) (pol 10.21 59.19 -37.42)) (L (pol 10.23 59.66 -37.16) (pol 11.43 58.39 -38.15)) (L (pol 11.44 58.63 -38.67) (pol 12.31 55.10 -41.79)) (L (pol 12.32 55.26 -41.82) (pol 12.63 49.95 -46.02)))(HJ (n raj1) (ax -14.33))(HJ (n raj2) (ax -11.28))(HJ (n raj3) (ax 5.65))(HJ (n raj4) (ax 26.80))(HJ (n laj1) (ax -13.54))(HJ (n laj2) (ax 21.83))(HJ (n laj3) (ax -5.59))(HJ (n laj4) (ax -26.93))(HJ (n rlj1) (ax -39.33))(HJ (n rlj2) (ax 17.90))(HJ (n rlj3) (ax 26.22))(HJ (n rlj4) (ax -73.84))(HJ (n rlj5) (ax 16.60))(HJ (n rlj6) (ax 23.84))(HJ (n llj1) (ax -39.28))(HJ (n llj2) (ax -17.90))(HJ (n llj3) (ax 26.25))(HJ (n llj4) (ax -73.84))(HJ (n llj5) (ax 16.63))(HJ (n llj6) (ax -23.84)) +{Tue 20:38:26 Step:5795} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5795} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5798} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5817} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5893} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5893} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5895} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5897} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5899} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5913} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5916} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5919} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5924} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5925} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5927} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5927} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5930} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5931} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5934} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5937} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5939} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5939} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5941} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:5941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5945} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5947} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:5947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5949} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5953} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:5953} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5956} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5965} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5967} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5969} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:5969} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5972} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:6019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:6021} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:32 Step:6021} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:6023} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:32 Step:6023} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:6026} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:6039} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:6041} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:6044} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:6045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:6047} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:32 Step:6047} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:6050} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:6051} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:6053} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:32 Step:6053} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:6055} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:32 Step:6055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:6057} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:32 Step:6057} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:6060} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 755.86))(GS (sl 0) (sr 0) (t 420.77) (pm PlayOn))(foul 7)(GYR (n torso) (rt -164.13 41.70 49.11))(ACC (n torso) (a 15.11 -10.22 10.98))(HJ (n hj1) (ax 0.60))(HJ (n hj2) (ax 0.00))(HJ (n raj1) (ax -119.58))(HJ (n raj2) (ax -3.69))(HJ (n raj3) (ax 74.76))(HJ (n raj4) (ax 89.98))(HJ (n laj1) (ax -121.39))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax -77.97))(HJ (n laj4) (ax -90.05))(HJ (n rlj1) (ax -40.17))(HJ (n rlj2) (ax -22.48))(HJ (n rlj3) (ax 68.25))(HJ (n rlj4) (ax -85.85))(HJ (n rlj5) (ax 55.03))(FRP (n rf) (c 0.04 -0.08 -0.01) (f -3.41 7.24 6.54))(HJ (n rlj6) (ax 45.00))(HJ (n llj1) (ax -18.78))(HJ (n llj2) (ax 22.42))(HJ (n llj3) (ax 76.97))(HJ (n llj4) (ax -82.16))(HJ (n llj5) (ax 57.43))(FRP (n lf) (c -0.04 -0.08 -0.01) (f 25.82 21.91 37.77))(HJ (n llj6) (ax -51.90)) +{Tue 20:38:32 Step:6060} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:6061} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:6064} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:6065} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:6068} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:6073} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:33 Step:6075} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:6077} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:33 Step:6077} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:6079} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:33 Step:6079} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:6083} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:6083} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:6086} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:6087} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:6089} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:33 Step:6089} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:6092} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? diff --git a/logs/2025-11-04_20.36.21__VOJKLN/Gym_1.log b/logs/2025-11-04_20.36.21__VOJKLN/Gym_1.log new file mode 100644 index 0000000..a1f8f5c --- /dev/null +++ b/logs/2025-11-04_20.36.21__VOJKLN/Gym_1.log @@ -0,0 +1,1916 @@ +{Tue 20:36:21 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 93, +Msg: (time (now 632.65))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.70 -17.96)) (llowerarm (pol 0.21 27.59 -18.34))) (G2R (pol 29.98 -12.84 0.45)) (G1R (pol 29.55 -8.95 0.48)) (F1R (pol 29.59 8.51 -1.16)) (F2R (pol 33.04 -27.93 -0.89)) (B (pol 15.28 -21.15 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.12 -47.57 -1.84) (pol 14.87 17.24 -2.05)) (L (pol 33.12 -28.11 -1.00) (pol 29.56 8.58 -1.19)) (L (pol 29.50 8.74 -1.30) (pol 5.12 59.85 -6.37)) (L (pol 33.08 -27.97 -0.85) (pol 18.02 -60.02 -1.65)) (L (pol 27.54 -5.53 -1.39) (pol 28.75 -17.36 -1.27)) (L (pol 27.51 -5.65 -1.20) (pol 29.28 -5.07 -1.05)) (L (pol 28.73 -17.38 -1.10) (pol 30.43 -16.25 -0.87)) (L (pol 17.16 -19.10 -1.59) (pol 16.44 -15.69 -1.87)) (L (pol 16.46 -16.00 -1.93) (pol 15.30 -13.86 -1.94)) (L (pol 15.29 -14.05 -2.23) (pol 14.11 -15.33 -2.36)) (L (pol 14.09 -15.32 -2.48) (pol 13.36 -19.46 -2.38)) (L (pol 13.34 -19.53 -2.50) (pol 13.45 -24.58 -2.52)) (L (pol 13.45 -24.52 -2.36) (pol 14.29 -28.68 -2.26)) (L (pol 14.32 -28.39 -2.30) (pol 15.54 -29.01 -2.02)) (L (pol 15.53 -29.05 -2.23) (pol 16.62 -26.67 -2.02)) (L (pol 16.60 -26.67 -1.99) (pol 17.21 -23.21 -1.86)) (L (pol 17.20 -22.90 -1.88) (pol 17.16 -19.02 -1.69)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:21 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 101, +Msg: (time (now 632.65))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.70 -17.96)) (llowerarm (pol 0.21 27.59 -18.34))) (G2R (pol 29.98 -12.84 0.45)) (G1R (pol 29.55 -8.95 0.48)) (F1R (pol 29.59 8.51 -1.16)) (F2R (pol 33.04 -27.93 -0.89)) (B (pol 15.28 -21.15 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.12 -47.57 -1.84) (pol 14.87 17.24 -2.05)) (L (pol 33.12 -28.11 -1.00) (pol 29.56 8.58 -1.19)) (L (pol 29.50 8.74 -1.30) (pol 5.12 59.85 -6.37)) (L (pol 33.08 -27.97 -0.85) (pol 18.02 -60.02 -1.65)) (L (pol 27.54 -5.53 -1.39) (pol 28.75 -17.36 -1.27)) (L (pol 27.51 -5.65 -1.20) (pol 29.28 -5.07 -1.05)) (L (pol 28.73 -17.38 -1.10) (pol 30.43 -16.25 -0.87)) (L (pol 17.16 -19.10 -1.59) (pol 16.44 -15.69 -1.87)) (L (pol 16.46 -16.00 -1.93) (pol 15.30 -13.86 -1.94)) (L (pol 15.29 -14.05 -2.23) (pol 14.11 -15.33 -2.36)) (L (pol 14.09 -15.32 -2.48) (pol 13.36 -19.46 -2.38)) (L (pol 13.34 -19.53 -2.50) (pol 13.45 -24.58 -2.52)) (L (pol 13.45 -24.52 -2.36) (pol 14.29 -28.68 -2.26)) (L (pol 14.32 -28.39 -2.30) (pol 15.54 -29.01 -2.02)) (L (pol 15.53 -29.05 -2.23) (pol 16.62 -26.67 -2.02)) (L (pol 16.60 -26.67 -1.99) (pol 17.21 -23.21 -1.86)) (L (pol 17.20 -22.90 -1.88) (pol 17.16 -19.02 -1.69)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:21 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 109, +Msg: (time (now 632.65))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.70 -17.96)) (llowerarm (pol 0.21 27.59 -18.34))) (G2R (pol 29.98 -12.84 0.45)) (G1R (pol 29.55 -8.95 0.48)) (F1R (pol 29.59 8.51 -1.16)) (F2R (pol 33.04 -27.93 -0.89)) (B (pol 15.28 -21.15 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.12 -47.57 -1.84) (pol 14.87 17.24 -2.05)) (L (pol 33.12 -28.11 -1.00) (pol 29.56 8.58 -1.19)) (L (pol 29.50 8.74 -1.30) (pol 5.12 59.85 -6.37)) (L (pol 33.08 -27.97 -0.85) (pol 18.02 -60.02 -1.65)) (L (pol 27.54 -5.53 -1.39) (pol 28.75 -17.36 -1.27)) (L (pol 27.51 -5.65 -1.20) (pol 29.28 -5.07 -1.05)) (L (pol 28.73 -17.38 -1.10) (pol 30.43 -16.25 -0.87)) (L (pol 17.16 -19.10 -1.59) (pol 16.44 -15.69 -1.87)) (L (pol 16.46 -16.00 -1.93) (pol 15.30 -13.86 -1.94)) (L (pol 15.29 -14.05 -2.23) (pol 14.11 -15.33 -2.36)) (L (pol 14.09 -15.32 -2.48) (pol 13.36 -19.46 -2.38)) (L (pol 13.34 -19.53 -2.50) (pol 13.45 -24.58 -2.52)) (L (pol 13.45 -24.52 -2.36) (pol 14.29 -28.68 -2.26)) (L (pol 14.32 -28.39 -2.30) (pol 15.54 -29.01 -2.02)) (L (pol 15.53 -29.05 -2.23) (pol 16.62 -26.67 -2.02)) (L (pol 16.60 -26.67 -1.99) (pol 17.21 -23.21 -1.86)) (L (pol 17.20 -22.90 -1.88) (pol 17.16 -19.02 -1.69)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:21 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 117, +Msg: (time (now 632.65))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.70 -17.96)) (llowerarm (pol 0.21 27.59 -18.34))) (G2R (pol 29.98 -12.84 0.45)) (G1R (pol 29.55 -8.95 0.48)) (F1R (pol 29.59 8.51 -1.16)) (F2R (pol 33.04 -27.93 -0.89)) (B (pol 15.28 -21.15 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.12 -47.57 -1.84) (pol 14.87 17.24 -2.05)) (L (pol 33.12 -28.11 -1.00) (pol 29.56 8.58 -1.19)) (L (pol 29.50 8.74 -1.30) (pol 5.12 59.85 -6.37)) (L (pol 33.08 -27.97 -0.85) (pol 18.02 -60.02 -1.65)) (L (pol 27.54 -5.53 -1.39) (pol 28.75 -17.36 -1.27)) (L (pol 27.51 -5.65 -1.20) (pol 29.28 -5.07 -1.05)) (L (pol 28.73 -17.38 -1.10) (pol 30.43 -16.25 -0.87)) (L (pol 17.16 -19.10 -1.59) (pol 16.44 -15.69 -1.87)) (L (pol 16.46 -16.00 -1.93) (pol 15.30 -13.86 -1.94)) (L (pol 15.29 -14.05 -2.23) (pol 14.11 -15.33 -2.36)) (L (pol 14.09 -15.32 -2.48) (pol 13.36 -19.46 -2.38)) (L (pol 13.34 -19.53 -2.50) (pol 13.45 -24.58 -2.52)) (L (pol 13.45 -24.52 -2.36) (pol 14.29 -28.68 -2.26)) (L (pol 14.32 -28.39 -2.30) (pol 15.54 -29.01 -2.02)) (L (pol 15.53 -29.05 -2.23) (pol 16.62 -26.67 -2.02)) (L (pol 16.60 -26.67 -1.99) (pol 17.21 -23.21 -1.86)) (L (pol 17.20 -22.90 -1.88) (pol 17.16 -19.02 -1.69)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:21 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 125, +Msg: (time (now 632.65))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.70 -17.96)) (llowerarm (pol 0.21 27.59 -18.34))) (G2R (pol 29.98 -12.84 0.45)) (G1R (pol 29.55 -8.95 0.48)) (F1R (pol 29.59 8.51 -1.16)) (F2R (pol 33.04 -27.93 -0.89)) (B (pol 15.28 -21.15 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.12 -47.57 -1.84) (pol 14.87 17.24 -2.05)) (L (pol 33.12 -28.11 -1.00) (pol 29.56 8.58 -1.19)) (L (pol 29.50 8.74 -1.30) (pol 5.12 59.85 -6.37)) (L (pol 33.08 -27.97 -0.85) (pol 18.02 -60.02 -1.65)) (L (pol 27.54 -5.53 -1.39) (pol 28.75 -17.36 -1.27)) (L (pol 27.51 -5.65 -1.20) (pol 29.28 -5.07 -1.05)) (L (pol 28.73 -17.38 -1.10) (pol 30.43 -16.25 -0.87)) (L (pol 17.16 -19.10 -1.59) (pol 16.44 -15.69 -1.87)) (L (pol 16.46 -16.00 -1.93) (pol 15.30 -13.86 -1.94)) (L (pol 15.29 -14.05 -2.23) (pol 14.11 -15.33 -2.36)) (L (pol 14.09 -15.32 -2.48) (pol 13.36 -19.46 -2.38)) (L (pol 13.34 -19.53 -2.50) (pol 13.45 -24.58 -2.52)) (L (pol 13.45 -24.52 -2.36) (pol 14.29 -28.68 -2.26)) (L (pol 14.32 -28.39 -2.30) (pol 15.54 -29.01 -2.02)) (L (pol 15.53 -29.05 -2.23) (pol 16.62 -26.67 -2.02)) (L (pol 16.60 -26.67 -1.99) (pol 17.21 -23.21 -1.86)) (L (pol 17.20 -22.90 -1.88) (pol 17.16 -19.02 -1.69)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:21 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 133, +Msg: (time (now 632.65))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.70 -17.96)) (llowerarm (pol 0.21 27.59 -18.34))) (G2R (pol 29.98 -12.84 0.45)) (G1R (pol 29.55 -8.95 0.48)) (F1R (pol 29.59 8.51 -1.16)) (F2R (pol 33.04 -27.93 -0.89)) (B (pol 15.28 -21.15 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.12 -47.57 -1.84) (pol 14.87 17.24 -2.05)) (L (pol 33.12 -28.11 -1.00) (pol 29.56 8.58 -1.19)) (L (pol 29.50 8.74 -1.30) (pol 5.12 59.85 -6.37)) (L (pol 33.08 -27.97 -0.85) (pol 18.02 -60.02 -1.65)) (L (pol 27.54 -5.53 -1.39) (pol 28.75 -17.36 -1.27)) (L (pol 27.51 -5.65 -1.20) (pol 29.28 -5.07 -1.05)) (L (pol 28.73 -17.38 -1.10) (pol 30.43 -16.25 -0.87)) (L (pol 17.16 -19.10 -1.59) (pol 16.44 -15.69 -1.87)) (L (pol 16.46 -16.00 -1.93) (pol 15.30 -13.86 -1.94)) (L (pol 15.29 -14.05 -2.23) (pol 14.11 -15.33 -2.36)) (L (pol 14.09 -15.32 -2.48) (pol 13.36 -19.46 -2.38)) (L (pol 13.34 -19.53 -2.50) (pol 13.45 -24.58 -2.52)) (L (pol 13.45 -24.52 -2.36) (pol 14.29 -28.68 -2.26)) (L (pol 14.32 -28.39 -2.30) (pol 15.54 -29.01 -2.02)) (L (pol 15.53 -29.05 -2.23) (pol 16.62 -26.67 -2.02)) (L (pol 16.60 -26.67 -1.99) (pol 17.21 -23.21 -1.86)) (L (pol 17.20 -22.90 -1.88) (pol 17.16 -19.02 -1.69)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:21 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 141, +Msg: (time (now 632.65))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.70 -17.96)) (llowerarm (pol 0.21 27.59 -18.34))) (G2R (pol 29.98 -12.84 0.45)) (G1R (pol 29.55 -8.95 0.48)) (F1R (pol 29.59 8.51 -1.16)) (F2R (pol 33.04 -27.93 -0.89)) (B (pol 15.28 -21.15 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.12 -47.57 -1.84) (pol 14.87 17.24 -2.05)) (L (pol 33.12 -28.11 -1.00) (pol 29.56 8.58 -1.19)) (L (pol 29.50 8.74 -1.30) (pol 5.12 59.85 -6.37)) (L (pol 33.08 -27.97 -0.85) (pol 18.02 -60.02 -1.65)) (L (pol 27.54 -5.53 -1.39) (pol 28.75 -17.36 -1.27)) (L (pol 27.51 -5.65 -1.20) (pol 29.28 -5.07 -1.05)) (L (pol 28.73 -17.38 -1.10) (pol 30.43 -16.25 -0.87)) (L (pol 17.16 -19.10 -1.59) (pol 16.44 -15.69 -1.87)) (L (pol 16.46 -16.00 -1.93) (pol 15.30 -13.86 -1.94)) (L (pol 15.29 -14.05 -2.23) (pol 14.11 -15.33 -2.36)) (L (pol 14.09 -15.32 -2.48) (pol 13.36 -19.46 -2.38)) (L (pol 13.34 -19.53 -2.50) (pol 13.45 -24.58 -2.52)) (L (pol 13.45 -24.52 -2.36) (pol 14.29 -28.68 -2.26)) (L (pol 14.32 -28.39 -2.30) (pol 15.54 -29.01 -2.02)) (L (pol 15.53 -29.05 -2.23) (pol 16.62 -26.67 -2.02)) (L (pol 16.60 -26.67 -1.99) (pol 17.21 -23.21 -1.86)) (L (pol 17.20 -22.90 -1.88) (pol 17.16 -19.02 -1.69)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:21 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 149, +Msg: (time (now 632.65))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.70 -17.96)) (llowerarm (pol 0.21 27.59 -18.34))) (G2R (pol 29.98 -12.84 0.45)) (G1R (pol 29.55 -8.95 0.48)) (F1R (pol 29.59 8.51 -1.16)) (F2R (pol 33.04 -27.93 -0.89)) (B (pol 15.28 -21.15 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.12 -47.57 -1.84) (pol 14.87 17.24 -2.05)) (L (pol 33.12 -28.11 -1.00) (pol 29.56 8.58 -1.19)) (L (pol 29.50 8.74 -1.30) (pol 5.12 59.85 -6.37)) (L (pol 33.08 -27.97 -0.85) (pol 18.02 -60.02 -1.65)) (L (pol 27.54 -5.53 -1.39) (pol 28.75 -17.36 -1.27)) (L (pol 27.51 -5.65 -1.20) (pol 29.28 -5.07 -1.05)) (L (pol 28.73 -17.38 -1.10) (pol 30.43 -16.25 -0.87)) (L (pol 17.16 -19.10 -1.59) (pol 16.44 -15.69 -1.87)) (L (pol 16.46 -16.00 -1.93) (pol 15.30 -13.86 -1.94)) (L (pol 15.29 -14.05 -2.23) (pol 14.11 -15.33 -2.36)) (L (pol 14.09 -15.32 -2.48) (pol 13.36 -19.46 -2.38)) (L (pol 13.34 -19.53 -2.50) (pol 13.45 -24.58 -2.52)) (L (pol 13.45 -24.52 -2.36) (pol 14.29 -28.68 -2.26)) (L (pol 14.32 -28.39 -2.30) (pol 15.54 -29.01 -2.02)) (L (pol 15.53 -29.05 -2.23) (pol 16.62 -26.67 -2.02)) (L (pol 16.60 -26.67 -1.99) (pol 17.21 -23.21 -1.86)) (L (pol 17.20 -22.90 -1.88) (pol 17.16 -19.02 -1.69)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:21 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 157, +Msg: (time (now 632.65))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.70 -17.96)) (llowerarm (pol 0.21 27.59 -18.34))) (G2R (pol 29.98 -12.84 0.45)) (G1R (pol 29.55 -8.95 0.48)) (F1R (pol 29.59 8.51 -1.16)) (F2R (pol 33.04 -27.93 -0.89)) (B (pol 15.28 -21.15 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.12 -47.57 -1.84) (pol 14.87 17.24 -2.05)) (L (pol 33.12 -28.11 -1.00) (pol 29.56 8.58 -1.19)) (L (pol 29.50 8.74 -1.30) (pol 5.12 59.85 -6.37)) (L (pol 33.08 -27.97 -0.85) (pol 18.02 -60.02 -1.65)) (L (pol 27.54 -5.53 -1.39) (pol 28.75 -17.36 -1.27)) (L (pol 27.51 -5.65 -1.20) (pol 29.28 -5.07 -1.05)) (L (pol 28.73 -17.38 -1.10) (pol 30.43 -16.25 -0.87)) (L (pol 17.16 -19.10 -1.59) (pol 16.44 -15.69 -1.87)) (L (pol 16.46 -16.00 -1.93) (pol 15.30 -13.86 -1.94)) (L (pol 15.29 -14.05 -2.23) (pol 14.11 -15.33 -2.36)) (L (pol 14.09 -15.32 -2.48) (pol 13.36 -19.46 -2.38)) (L (pol 13.34 -19.53 -2.50) (pol 13.45 -24.58 -2.52)) (L (pol 13.45 -24.52 -2.36) (pol 14.29 -28.68 -2.26)) (L (pol 14.32 -28.39 -2.30) (pol 15.54 -29.01 -2.02)) (L (pol 15.53 -29.05 -2.23) (pol 16.62 -26.67 -2.02)) (L (pol 16.60 -26.67 -1.99) (pol 17.21 -23.21 -1.86)) (L (pol 17.20 -22.90 -1.88) (pol 17.16 -19.02 -1.69)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:21 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 165, +Msg: (time (now 632.65))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.70 -17.96)) (llowerarm (pol 0.21 27.59 -18.34))) (G2R (pol 29.98 -12.84 0.45)) (G1R (pol 29.55 -8.95 0.48)) (F1R (pol 29.59 8.51 -1.16)) (F2R (pol 33.04 -27.93 -0.89)) (B (pol 15.28 -21.15 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.12 -47.57 -1.84) (pol 14.87 17.24 -2.05)) (L (pol 33.12 -28.11 -1.00) (pol 29.56 8.58 -1.19)) (L (pol 29.50 8.74 -1.30) (pol 5.12 59.85 -6.37)) (L (pol 33.08 -27.97 -0.85) (pol 18.02 -60.02 -1.65)) (L (pol 27.54 -5.53 -1.39) (pol 28.75 -17.36 -1.27)) (L (pol 27.51 -5.65 -1.20) (pol 29.28 -5.07 -1.05)) (L (pol 28.73 -17.38 -1.10) (pol 30.43 -16.25 -0.87)) (L (pol 17.16 -19.10 -1.59) (pol 16.44 -15.69 -1.87)) (L (pol 16.46 -16.00 -1.93) (pol 15.30 -13.86 -1.94)) (L (pol 15.29 -14.05 -2.23) (pol 14.11 -15.33 -2.36)) (L (pol 14.09 -15.32 -2.48) (pol 13.36 -19.46 -2.38)) (L (pol 13.34 -19.53 -2.50) (pol 13.45 -24.58 -2.52)) (L (pol 13.45 -24.52 -2.36) (pol 14.29 -28.68 -2.26)) (L (pol 14.32 -28.39 -2.30) (pol 15.54 -29.01 -2.02)) (L (pol 15.53 -29.05 -2.23) (pol 16.62 -26.67 -2.02)) (L (pol 16.60 -26.67 -1.99) (pol 17.21 -23.21 -1.86)) (L (pol 17.20 -22.90 -1.88) (pol 17.16 -19.02 -1.69)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:21 Step:3} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:21 Step:5} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:21 Step:5} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:21 Step:8} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:21 Step:9} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:21 Step:11} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:22 Step:11} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:22 Step:15} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:22 Step:15} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:22 Step:17} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:22 Step:17} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:22 Step:19} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:22 Step:19} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:22 Step:22} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:22 Step:23} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:22 Step:24} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:22 Step:25} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:22 Step:27} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:22 Step:27} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:22 Step:29} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:22 Step:29} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:22 Step:31} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:22 Step:31} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:22 Step:33} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:22 Step:33} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:22 Step:36} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:32 Step:36} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:32 Step:545} Server_Comm.py: The agent lost 508 consecutive packets! Is syncmode disabled? +{Tue 20:36:32 Step:545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:547} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:32 Step:547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:550} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:32 Step:553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:555} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:32 Step:555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:558} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:563} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:567} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:570} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:573} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:575} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:580} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:583} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:583} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:585} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:599} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:601} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:601} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:603} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:605} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:605} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:607} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:607} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:610} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:610} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:34 Step:611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:614} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:617} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:619} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:622} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:627} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:627} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:629} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:629} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:631} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:634} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:635} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:638} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:639} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:641} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:643} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:643} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:646} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:649} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:652} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:652} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:35 Step:653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:656} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:659} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:662} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:668} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:673} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:677} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 646.15))(GS (sl 0) (sr 0) (t 312.75) (pm PlayOn))(foul 7)(GYR (n torso) (rt 167.47 -111.81 275.09))(ACC (n torso) (a -0.29 1.43 -5.94))(HJ (n hj1) (ax 39.29))(HJ (n hj2) (ax 13.78))(See (F1L (pol 10.81 40.27 16.47)) (mypos -10.44 0.19 0.37) (myorien 88.20) (ballpos -9.00 0.00 0.04) (L (pol 12.84 12.36 -59.33) (pol 14.35 17.42 -52.54)) (L (pol 16.94 11.40 -59.53) (pol 10.82 40.10 16.52)) (L (pol 3.95 50.34 34.21) (pol 3.38 56.60 43.74)) (L (pol 3.96 50.32 34.31) (pol 5.38 55.64 47.39)))(HJ (n raj1) (ax -83.09))(HJ (n raj2) (ax -1.63))(HJ (n raj3) (ax 90.00))(HJ (n raj4) (ax 83.58))(HJ (n laj1) (ax -94.89))(HJ (n laj2) (ax 1.30))(HJ (n laj3) (ax -90.00))(HJ (n laj4) (ax -83.67))(HJ (n rlj1) (ax -1.06))(HJ (n rlj2) (ax 27.09))(HJ (n rlj3) (ax -5.47))(HJ (n rlj4) (ax -48.03))(HJ (n rlj5) (ax 16.15))(FRP (n rf) (c -0.04 -0.08 -0.01) (f 37.48 -1.18 55.76))(HJ (n rlj6) (ax -26.02))(HJ (n llj1) (ax -1.03))(HJ (n llj2) (ax -25.91))(HJ (n llj3) (ax -2.10))(HJ (n llj4) (ax -48.10))(HJ (n llj5) (ax 16.16))(HJ (n llj6) (ax 28.78)) +{Tue 20:36:35 Step:677} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:680} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:684} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:688} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:689} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:692} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:759} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:761} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:764} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:767} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:769} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:771} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:774} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:777} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:779} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:779} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:789} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:791} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:835} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:837} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:841} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:841} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:39 Step:847} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:851} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:854} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:39 Step:857} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:860} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:39 Step:861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:864} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:39 Step:865} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:868} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:39 Step:869} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:871} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:873} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:876} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:39 Step:877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:879} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:879} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:882} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:39 Step:883} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:885} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:885} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:887} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:887} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:889} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:889} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:893} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:943} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:945} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:945} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:949} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:949} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:951} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:953} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:953} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:955} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:955} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:957} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:957} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:959} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:959} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:963} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:41 Step:963} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:965} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:965} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:967} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:967} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:970} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:41 Step:971} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:973} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:973} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:976} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:41 Step:977} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:979} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:979} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:981} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:985} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:985} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:987} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:987} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:990} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:991} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:993} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:993} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:996} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:998} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:42 Step:1002} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 652.65))(GS (sl 0) (sr 0) (t 319.24) (pm PlayOn))(foul 7)(GYR (n torso) (rt -330.68 62.89 184.90))(ACC (n torso) (a 13.37 -31.13 21.95))(HJ (n hj1) (ax 6.90))(HJ (n hj2) (ax -34.88))(HJ (n raj1) (ax -94.46))(HJ (n raj2) (ax -6.75))(HJ (n raj3) (ax 90.01))(HJ (n raj4) (ax 70.01))(HJ (n laj1) (ax -85.92))(HJ (n laj2) (ax 5.40))(HJ (n laj3) (ax -89.99))(HJ (n laj4) (ax -69.99))(HJ (n rlj1) (ax -14.31))(HJ (n rlj2) (ax -31.87))(HJ (n rlj3) (ax 32.32))(HJ (n rlj4) (ax -99.53))(HJ (n rlj5) (ax 49.32))(HJ (n rlj6) (ax 26.92))(HJ (n llj1) (ax -53.60))(HJ (n llj2) (ax 10.17))(HJ (n llj3) (ax 83.83))(HJ (n llj4) (ax -113.81))(HJ (n llj5) (ax 53.63))(FRP (n lf) (c 0.01 -0.08 -0.02) (f -36.54 40.18 -4.61))(HJ (n llj6) (ax -26.16)) +{Tue 20:36:42 Step:1019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:1021} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:1021} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:1024} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:1025} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:1027} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:1027} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:1030} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:1031} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:1033} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:1033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1036} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:43 Step:1037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1039} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:1039} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1042} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:43 Step:1045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1053} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:43 Step:1055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1058} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:43 Step:1058} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1059} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1061} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:1061} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1063} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:1063} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1066} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:43 Step:1069} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1071} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1103} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1106} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1109} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1111} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1143} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1145} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1145} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1149} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:45 Step:1161} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1163} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1163} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1165} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1231} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1233} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1233} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1235} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1235} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1238} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1239} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1241} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1249} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1249} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1252} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1255} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1258} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1261} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1265} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:48 Step:1265} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1267} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 657.96))(GS (sl 0) (sr 0) (t 324.54) (pm PlayOn))(foul 7)(GYR (n torso) (rt -231.72 40.46 -41.60))(ACC (n torso) (a 2.74 -3.55 3.57))(HJ (n hj1) (ax -0.44))(HJ (n hj2) (ax 0.00))(See (P (team Gym) (id 1) (lfoot (pol 0.45 48.97 -56.82))) (G2R (pol 25.02 18.70 38.08)) (G1R (pol 24.95 24.66 37.08)) (F1R (pol 26.73 46.75 30.65)) (F2R (pol 27.03 -5.46 35.58)) (B (pol 1.14 -3.95 14.48)) (mypos -9.95 0.44 0.47) (myorien -22.89) (ballpos -9.00 0.00 0.04) (L (pol 14.42 -31.60 27.63) (pol 12.06 59.93 23.57)) (L (pol 27.10 -5.41 35.45) (pol 26.72 46.99 30.48)) (L (pol 26.78 46.89 30.46) (pol 17.14 60.17 24.63)) (L (pol 27.04 -5.28 35.21) (pol 10.72 -59.94 11.34)) (L (pol 23.28 30.30 34.63) (pol 23.41 12.27 36.22)) (L (pol 23.29 29.86 34.50) (pol 25.09 29.68 34.62)) (L (pol 23.39 12.16 36.34) (pol 25.24 13.05 36.29)) (L (pol 11.96 19.58 34.87) (pol 11.60 26.68 33.62)) (L (pol 11.60 26.56 33.98) (pol 10.69 31.61 32.84)) (L (pol 10.68 31.66 32.76) (pol 9.47 32.68 32.07)) (L (pol 9.46 32.49 32.38) (pol 8.37 28.08 32.79)) (L (pol 8.38 27.98 32.78) (pol 7.97 18.26 33.74)) (L (pol 7.98 18.19 33.81) (pol 8.50 9.18 34.19)) (L (pol 8.51 8.94 34.16) (pol 9.64 5.29 34.60)) (L (pol 9.64 5.16 34.57) (pol 10.85 7.04 35.02)) (L (pol 10.83 6.99 34.83) (pol 11.67 12.66 35.13)) (L (pol 11.69 12.82 35.16) (pol 11.97 19.74 34.80)))(HJ (n raj1) (ax -125.51))(HJ (n raj2) (ax 1.32))(HJ (n raj3) (ax 69.12))(HJ (n raj4) (ax 85.82))(HJ (n laj1) (ax -125.79))(HJ (n laj2) (ax -2.58))(HJ (n laj3) (ax -72.16))(HJ (n laj4) (ax -85.96))(HJ (n rlj1) (ax -1.25))(HJ (n rlj2) (ax -7.82))(HJ (n rlj3) (ax 83.69))(HJ (n rlj4) (ax -86.45))(HJ (n rlj5) (ax 25.35))(FRP (n rf) (c 0.05 0.08 -0.01) (f 37.95 9.47 60.33))(HJ (n rlj6) (ax 51.83))(HJ (n llj1) (ax -40.01))(HJ (n llj2) (ax 23.96))(HJ (n llj3) (ax 58.13))(HJ (n llj4) (ax -67.88))(HJ (n llj5) (ax 53.91))(FRP (n lf) (c -0.04 -0.08 -0.01) (f -17.40 4.72 40.48))(HJ (n llj6) (ax -45.50)) +{Tue 20:36:48 Step:1267} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1267} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1270} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:48 Step:1271} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1273} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1273} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1276} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:48 Step:1281} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1283} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1283} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1286} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:48 Step:1287} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1289} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1289} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1292} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:48 Step:1293} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1295} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1295} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1297} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1297} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1300} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:48 Step:1301} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1303} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1303} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1306} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:49 Step:1307} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1309} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1309} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1311} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1311} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1313} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1313} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1314} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1315} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1317} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1317} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1319} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1319} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1359} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1362} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:50 Step:1363} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1365} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1365} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1369} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1371} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1373} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1373} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1375} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1375} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1377} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1377} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1379} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1379} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1381} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1381} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1383} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1383} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1385} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1389} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1392} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:51 Step:1393} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1397} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:51 Step:1397} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1401} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:51 Step:1401} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1403} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:51 Step:1403} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1405} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:51 Step:1405} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1408} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:51 Step:1409} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1411} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1465} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1467} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1469} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1471} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1474} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:52 Step:1475} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1479} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:52 Step:1479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1482} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1483} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1486} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1487} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1489} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1492} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1495} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1500} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1501} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1503} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1503} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1506} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1507} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:53 Step:1509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1512} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1516} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1520} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1524} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1527} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1534} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 663.30))(GS (sl 0) (sr 0) (t 329.88) (pm PlayOn))(foul 7)(GYR (n torso) (rt -88.29 77.84 -25.34))(ACC (n torso) (a 0.99 -3.00 0.95))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -78.46))(HJ (n raj2) (ax -3.15))(HJ (n raj3) (ax 79.65))(HJ (n raj4) (ax 3.05))(HJ (n laj1) (ax -79.04))(HJ (n laj2) (ax 6.82))(HJ (n laj3) (ax -79.66))(HJ (n laj4) (ax -3.13))(HJ (n rlj1) (ax -73.03))(HJ (n rlj2) (ax -3.91))(HJ (n rlj3) (ax 56.34))(HJ (n rlj4) (ax -87.06))(HJ (n rlj5) (ax 8.30))(FRP (n rf) (c -0.04 0.08 -0.01) (f 32.60 35.76 23.51))(HJ (n rlj6) (ax 30.59))(HJ (n llj1) (ax -65.89))(HJ (n llj2) (ax 7.88))(HJ (n llj3) (ax 27.31))(HJ (n llj4) (ax -44.05))(HJ (n llj5) (ax 8.34))(FRP (n lf) (c 0.04 0.08 -0.01) (f -39.90 33.48 11.09))(HJ (n llj6) (ax -30.85)) +{Tue 20:36:55 Step:1589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1592} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1595} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1598} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1598} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1601} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1601} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1604} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1605} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1607} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1607} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1610} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1613} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1617} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1617} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:56 Step:1649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1651} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:56 Step:1651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1653} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:56 Step:1653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1655} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:56 Step:1655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1658} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:56 Step:1659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1663} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:56 Step:1663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1665} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1675} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1678} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:57 Step:1681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1683} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1686} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:57 Step:1687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1690} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:57 Step:1691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1692} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1695} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1697} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1699} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 666.61))(GS (sl 0) (sr 0) (t 333.18) (pm PlayOn))(foul 7)(GYR (n torso) (rt 176.13 -115.83 148.07))(ACC (n torso) (a -3.06 0.49 3.84))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (F2L (pol 11.05 -25.93 20.40)) (mypos -10.52 0.11 0.44) (myorien -92.25) (ballpos -9.00 0.00 0.04) (L (pol 14.61 49.65 21.43) (pol 12.64 60.02 17.89)) (L (pol 11.06 -26.00 20.27) (pol 5.15 -60.06 3.66)) (L (pol 18.20 59.94 18.59) (pol 11.07 -26.17 20.37)) (L (pol 3.05 -60.03 0.03) (pol 4.14 -40.98 11.25)) (L (pol 4.13 -41.17 11.17) (pol 5.47 -55.01 6.53)))(HJ (n raj1) (ax -118.10))(HJ (n raj2) (ax 1.10))(HJ (n raj3) (ax 62.78))(HJ (n raj4) (ax 69.06))(HJ (n laj1) (ax -119.36))(HJ (n laj2) (ax 60.39))(HJ (n laj3) (ax -63.83))(HJ (n laj4) (ax -72.21))(HJ (n rlj1) (ax 0.93))(HJ (n rlj2) (ax -29.12))(HJ (n rlj3) (ax 16.13))(HJ (n rlj4) (ax -91.85))(HJ (n rlj5) (ax 55.09))(FRP (n rf) (c -0.04 0.08 -0.01) (f -13.34 -2.41 19.02))(HJ (n rlj6) (ax 22.26))(HJ (n llj1) (ax -4.97))(HJ (n llj2) (ax 27.69))(HJ (n llj3) (ax 36.69))(HJ (n llj4) (ax -130.82))(HJ (n llj5) (ax 54.80))(HJ (n llj6) (ax -22.21)) +{Tue 20:36:57 Step:1699} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1699} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1701} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1703} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1706} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:57 Step:1707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1709} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1712} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:58 Step:1717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1719} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1721} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1721} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1723} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1723} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1789} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1791} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1793} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1796} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:00 Step:1801} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1803} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1806} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:00 Step:1807} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1809} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1821} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1823} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1823} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1826} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:00 Step:1827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1829} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1831} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1834} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:00 Step:1835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1836} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:01 Step:1837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1840} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:01 Step:1841} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1843} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:01 Step:1843} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1845} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:01 Step:1845} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1847} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:01 Step:1847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1849} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1853} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:01 Step:1853} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1857} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:01 Step:1857} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1860} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:01 Step:1861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1863} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:01 Step:1863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1865} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:01 Step:1865} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1868} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:01 Step:1869} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1871} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:02 Step:1907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1909} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:02 Step:1909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1911} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:02 Step:1911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1914} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:02 Step:1919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1923} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1927} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1927} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1930} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:04 Step:1979} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1981} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:1981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1983} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:1983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1985} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:1985} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1991} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1993} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:1993} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1995} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1997} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:1997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1999} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:2001} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:2003} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2005} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2007} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2007} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2012} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:2013} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2016} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:2017} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2019} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2022} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:2023} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2025} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2025} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2028} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:2029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2033} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:2033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2038} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:2039} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2041} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2041} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2043} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2043} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2045} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2047} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2047} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2049} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2053} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:07 Step:2095} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2097} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2099} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2099} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2101} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2101} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2103} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 674.70))(GS (sl 0) (sr 0) (t 341.25) (pm PlayOn))(foul 7)(GYR (n torso) (rt 3.37 4.48 -25.72))(ACC (n torso) (a -0.07 3.61 5.05))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.15 -27.85 -1.81)) (llowerarm (pol 0.15 25.39 -1.97))) (G2L (pol 4.60 -58.67 -13.06)) (F2L (pol 11.88 -22.76 -40.46)) (mypos -11.04 1.20 0.24) (myorien -95.65) (ballpos -9.00 0.00 0.04) (L (pol 15.75 58.02 -30.77) (pol 15.10 60.27 -29.33)) (L (pol 11.90 -22.88 -40.59) (pol 4.90 -60.17 -24.70)) (L (pol 16.41 59.91 -29.28) (pol 11.90 -23.05 -40.63)) (L (pol 2.74 -59.80 -27.41) (pol 4.73 -33.20 -39.16)) (L (pol 4.73 -32.99 -39.21) (pol 5.78 -49.79 -30.85)))(HJ (n raj1) (ax 8.32))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 55.89))(HJ (n raj4) (ax 83.93))(HJ (n laj1) (ax 8.32))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax -55.91))(HJ (n laj4) (ax -83.91))(HJ (n rlj1) (ax -30.07))(HJ (n rlj2) (ax 26.73))(HJ (n rlj3) (ax 13.58))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax 52.86))(HJ (n rlj6) (ax 47.26))(HJ (n llj1) (ax -31.32))(HJ (n llj2) (ax -26.63))(HJ (n llj3) (ax 13.49))(HJ (n llj4) (ax 1.00))(HJ (n llj5) (ax 52.85))(HJ (n llj6) (ax -47.20)) +{Tue 20:37:07 Step:2103} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2103} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2105} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2107} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2197} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2199} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2199} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2211} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2213} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2213} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2215} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2215} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2217} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2219} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2221} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2221} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2223} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2223} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2225} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:10 Step:2225} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2228} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2229} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2232} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2233} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2235} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:10 Step:2235} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2239} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2239} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2242} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2243} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2247} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2250} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2255} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2258} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2263} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2263} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2266} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2266} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:10 Step:2269} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2272} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2305} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2308} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2309} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2314} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2317} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2319} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2319} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2321} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2321} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2324} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:12 Step:2325} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2327} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2327} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2334} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:12 Step:2337} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2339} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2343} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:12 Step:2343} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2345} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2345} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2348} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:12 Step:2349} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2351} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2351} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2353} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2353} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2356} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:12 Step:2359} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2361} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2361} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2363} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2363} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2365} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2365} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2368} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:13 Step:2415} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2418} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2418} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2419} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2421} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2421} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2426} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2427} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2430} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2431} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2436} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2437} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2439} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2442} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2443} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2445} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2445} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2449} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2449} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2452} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 681.68))(GS (sl 0) (sr 0) (t 348.23) (pm PlayOn))(foul 7)(GYR (n torso) (rt -141.82 -240.26 -207.07))(ACC (n torso) (a -10.58 15.45 9.66))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax 0.00))(HJ (n raj1) (ax -47.71))(HJ (n raj2) (ax -5.79))(HJ (n raj3) (ax -77.82))(HJ (n raj4) (ax 85.29))(HJ (n laj1) (ax -47.70))(HJ (n laj2) (ax 5.53))(HJ (n laj3) (ax 78.22))(HJ (n laj4) (ax -85.58))(HJ (n rlj1) (ax -87.72))(HJ (n rlj2) (ax -40.07))(HJ (n rlj3) (ax 40.34))(HJ (n rlj4) (ax -76.05))(HJ (n rlj5) (ax -44.50))(FRP (n rf) (c 0.06 0.08 -0.01) (f 15.66 25.51 49.82))(HJ (n rlj6) (ax 50.41))(HJ (n llj1) (ax -90.50))(HJ (n llj2) (ax -25.00))(HJ (n llj3) (ax 39.50))(HJ (n llj4) (ax -97.97))(HJ (n llj5) (ax -44.54))(FRP (n lf) (c -0.05 0.08 0.03) (f 44.29 4.28 59.82))(HJ (n llj6) (ax -50.94)) +{Tue 20:37:14 Step:2452} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2453} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2456} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2457} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2460} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2463} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2467} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:15 Step:2467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2470} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:15 Step:2471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2474} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:15 Step:2475} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2478} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:16 Step:2551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2553} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2556} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:16 Step:2557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2559} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2563} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2567} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2569} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:17 Step:2569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2572} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2575} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:17 Step:2575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2578} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2581} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2681} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2683} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2685} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2688} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2695} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2703} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2705} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2708} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2711} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2711} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2715} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2718} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2721} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2721} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2723} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2725} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2727} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2730} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2731} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2733} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2733} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2735} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2737} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2740} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2740} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:20 Step:2742} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 687.49))(GS (sl 0) (sr 0) (t 354.02) (pm PlayOn))(foul 7)(GYR (n torso) (rt -351.27 229.37 -13.09))(ACC (n torso) (a 6.04 -3.05 0.86))(HJ (n hj1) (ax -119.29))(HJ (n hj2) (ax -33.33))(HJ (n raj1) (ax -115.31))(HJ (n raj2) (ax 1.06))(HJ (n raj3) (ax 120.74))(HJ (n raj4) (ax 84.74))(HJ (n laj1) (ax -126.60))(HJ (n laj2) (ax 77.19))(HJ (n laj3) (ax -114.24))(HJ (n laj4) (ax -84.73))(HJ (n rlj1) (ax -79.12))(HJ (n rlj2) (ax 26.37))(HJ (n rlj3) (ax 74.02))(HJ (n rlj4) (ax -130.07))(HJ (n rlj5) (ax 71.47))(HJ (n rlj6) (ax 45.27))(HJ (n llj1) (ax -54.64))(HJ (n llj2) (ax -29.42))(HJ (n llj3) (ax 87.45))(HJ (n llj4) (ax -134.68))(HJ (n llj5) (ax 1.39))(HJ (n llj6) (ax -42.08)) +{Tue 20:37:20 Step:2745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2747} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2749} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2751} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:21 Step:2757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2759} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:21 Step:2761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2767} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:21 Step:2767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2771} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:21 Step:2775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2777} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:21 Step:2777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2780} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2797} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2799} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2799} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2803} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2806} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2807} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2809} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2809} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2812} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2815} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2818} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2821} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2823} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2823} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2826} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2830} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2831} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2834} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2838} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2841} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2841} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2844} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:2845} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2847} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2851} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:24 Step:2921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2923} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:24 Step:2923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2925} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:24 Step:2925} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2927} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:24 Step:2927} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2928} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 691.21))(GS (sl 0) (sr 0) (t 357.74) (pm PlayOn))(foul 7)(GYR (n torso) (rt -18.74 -67.47 -54.70))(ACC (n torso) (a -20.42 -17.92 -0.36))(HJ (n hj1) (ax 63.14))(HJ (n hj2) (ax -49.08))(HJ (n raj1) (ax -80.52))(HJ (n raj2) (ax 3.89))(HJ (n raj3) (ax 112.12))(HJ (n raj4) (ax 69.69))(HJ (n laj1) (ax -77.28))(HJ (n laj2) (ax -3.75))(HJ (n laj3) (ax -120.48))(HJ (n laj4) (ax -85.82))(HJ (n rlj1) (ax -9.88))(HJ (n rlj2) (ax 26.54))(HJ (n rlj3) (ax 43.26))(HJ (n rlj4) (ax -114.67))(HJ (n rlj5) (ax 64.01))(HJ (n rlj6) (ax 8.64))(HJ (n llj1) (ax -16.91))(HJ (n llj2) (ax -28.01))(HJ (n llj3) (ax 22.11))(HJ (n llj4) (ax -93.06))(HJ (n llj5) (ax 59.46))(HJ (n llj6) (ax 17.54)) +{Tue 20:37:24 Step:2930} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:24 Step:2931} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2934} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:24 Step:2935} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2937} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2937} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2940} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2943} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2943} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2945} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2945} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2947} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2950} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2953} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2953} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2956} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2959} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2961} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2961} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2963} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2963} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2965} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2965} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2967} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2967} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3047} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3050} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:27 Step:3051} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3053} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3053} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3056} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:27 Step:3057} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3059} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3061} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3063} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3063} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3066} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:27 Step:3071} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3073} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3073} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3076} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:27 Step:3077} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3079} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3115} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3119} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3119} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3120} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 695.06))(GS (sl 0) (sr 0) (t 361.58) (pm PlayOn))(foul 7)(GYR (n torso) (rt 196.09 -3.63 -49.01))(ACC (n torso) (a -0.35 -5.10 -2.43))(HJ (n hj1) (ax -0.03))(HJ (n hj2) (ax 0.00))(HJ (n raj1) (ax -5.08))(HJ (n raj2) (ax -32.66))(HJ (n raj3) (ax -3.18))(HJ (n raj4) (ax 19.96))(HJ (n laj1) (ax -7.49))(HJ (n laj2) (ax 11.07))(HJ (n laj3) (ax 3.23))(HJ (n laj4) (ax 1.00))(HJ (n rlj1) (ax -28.64))(HJ (n rlj2) (ax 16.02))(HJ (n rlj3) (ax 33.20))(HJ (n rlj4) (ax -66.92))(HJ (n rlj5) (ax 23.49))(HJ (n rlj6) (ax 23.83))(HJ (n llj1) (ax -28.64))(HJ (n llj2) (ax -16.04))(HJ (n llj3) (ax 33.19))(HJ (n llj4) (ax -66.93))(HJ (n llj5) (ax 23.48))(HJ (n llj6) (ax -23.86)) +{Tue 20:37:28 Step:3121} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3121} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3123} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3213} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3216} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:30 Step:3217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3219} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3219} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3221} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3221} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3223} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3223} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3225} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3231} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3233} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3233} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3236} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:31 Step:3261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3263} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:32 Step:3263} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3266} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3267} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3269} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:32 Step:3299} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3302} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3305} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3307} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3319} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3321} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3321} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3324} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:33 Step:3327} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3329} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3332} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:33 Step:3335} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3337} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3337} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3342} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:33 Step:3343} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3346} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:33 Step:3346} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:33 Step:3347} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3351} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3351} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3355} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3359} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 699.84))(GS (sl 0) (sr 0) (t 366.36) (pm PlayOn))(foul 7)(GYR (n torso) (rt -85.22 57.21 214.22))(ACC (n torso) (a -5.69 15.03 46.88))(HJ (n hj1) (ax -118.58))(HJ (n hj2) (ax -35.03))(See (P (team Gym) (id 1) (rlowerarm (pol 0.27 18.18 -30.56)) (rfoot (pol 0.43 -20.67 -43.92))) (G2R (pol 26.51 21.15 40.68)) (G1R (pol 26.43 26.02 38.00)) (F1R (pol 27.78 40.62 24.16)) (F2R (pol 28.71 -2.32 47.49)) (B (pol 2.75 -11.94 41.13)) (mypos -11.39 1.27 0.47) (myorien -0.89) (ballpos -9.00 0.00 0.04) (L (pol 16.02 -34.77 49.00) (pol 14.37 53.58 9.02)) (L (pol 28.71 -2.30 47.43) (pol 27.81 40.87 24.03)) (L (pol 27.81 40.86 23.85) (pol 11.75 60.02 0.76)) (L (pol 28.70 -2.46 47.34) (pol 13.23 -54.09 45.39)) (L (pol 24.63 28.85 33.54) (pol 24.94 14.35 41.66)) (L (pol 24.67 28.63 33.43) (pol 26.47 28.62 33.74)) (L (pol 24.94 14.58 41.85) (pol 26.74 15.56 41.33)) (L (pol 13.43 18.96 38.31) (pol 13.03 23.54 35.57)) (L (pol 12.99 24.35 35.55) (pol 12.03 26.98 33.46)) (L (pol 12.01 27.11 33.32) (pol 10.80 27.36 33.03)) (L (pol 10.81 27.21 32.98) (pol 9.79 23.11 34.99)) (L (pol 9.79 23.32 35.07) (pol 9.49 15.58 39.20)) (L (pol 9.49 15.51 39.18) (pol 10.11 8.74 42.25)) (L (pol 10.10 8.52 42.05) (pol 11.27 5.99 43.78)) (L (pol 11.24 5.80 43.46) (pol 12.44 7.86 43.01)) (L (pol 12.43 8.07 43.10) (pol 13.23 13.08 41.43)) (L (pol 13.25 12.84 41.25) (pol 13.47 18.75 38.46)))(HJ (n raj1) (ax -95.04))(HJ (n raj2) (ax -23.69))(HJ (n raj3) (ax 28.12))(HJ (n raj4) (ax 70.05))(HJ (n laj1) (ax -95.04))(HJ (n laj2) (ax 19.20))(HJ (n laj3) (ax -27.88))(HJ (n laj4) (ax -70.18))(HJ (n rlj1) (ax -11.06))(HJ (n rlj2) (ax 13.51))(HJ (n rlj3) (ax -6.88))(HJ (n rlj4) (ax -111.95))(HJ (n rlj5) (ax 64.62))(FRP (n rf) (c 0.02 0.08 -0.01) (f -53.67 -57.63 123.80))(HJ (n rlj6) (ax -7.70))(HJ (n llj1) (ax -10.55))(HJ (n llj2) (ax -5.67))(HJ (n llj3) (ax 49.42))(HJ (n llj4) (ax -113.09))(HJ (n llj5) (ax 56.07))(HJ (n llj6) (ax 8.05)) +{Tue 20:37:34 Step:3359} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3362} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3363} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3366} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3373} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3376} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3377} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3379} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:34 Step:3379} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3382} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3383} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3385} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 700.36))(GS (sl 0) (sr 0) (t 366.88) (pm PlayOn))(foul 7)(GYR (n torso) (rt -116.36 -219.26 25.08))(ACC (n torso) (a -0.30 -2.69 9.27))(HJ (n hj1) (ax -123.98))(HJ (n hj2) (ax -35.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.27 35.21 -31.18))) (G2R (pol 26.80 -20.26 5.77)) (G1R (pol 26.72 -16.78 2.64)) (F1R (pol 28.22 -5.36 -11.98)) (F2R (pol 28.76 -34.46 17.41)) (B (pol 2.85 -34.42 9.63)) (mypos -11.70 0.81 0.34) (myorien 14.37) (ballpos -9.00 0.00 0.04) (L (pol 15.96 -52.36 30.19) (pol 14.90 9.02 -25.33)) (L (pol 28.82 -34.31 17.55) (pol 28.23 -5.37 -11.81)) (L (pol 28.25 -5.43 -11.67) (pol 9.39 52.97 -46.23)) (L (pol 28.78 -34.49 17.40) (pol 14.05 -59.78 34.17)) (L (pol 24.98 -15.30 -1.65) (pol 25.22 -24.91 8.11)) (L (pol 25.01 -15.45 -1.89) (pol 26.80 -15.59 -1.81)) (L (pol 25.23 -24.89 7.95) (pol 26.98 -24.06 7.62)) (L (pol 13.74 -21.34 3.70) (pol 13.35 -18.11 0.31)) (L (pol 13.34 -18.42 0.23) (pol 12.38 -15.38 -2.50)) (L (pol 12.37 -16.00 -2.43) (pol 11.14 -15.66 -2.97)) (L (pol 11.15 -15.41 -2.63) (pol 10.10 -17.97 -0.47)) (L (pol 10.12 -18.23 -0.74) (pol 9.75 -22.98 4.36)) (L (pol 9.75 -22.76 4.24) (pol 10.28 -27.24 8.83)) (L (pol 10.29 -27.51 8.94) (pol 11.40 -28.99 10.90)) (L (pol 11.42 -29.03 10.81) (pol 12.64 -28.05 10.05)) (L (pol 12.62 -28.15 10.11) (pol 13.47 -24.89 7.43)) (L (pol 13.50 -25.15 7.31) (pol 13.78 -21.68 3.46)))(HJ (n raj1) (ax -84.23))(HJ (n raj2) (ax -14.29))(HJ (n raj3) (ax 89.95))(HJ (n raj4) (ax 70.00))(HJ (n laj1) (ax -95.02))(HJ (n laj2) (ax 19.19))(HJ (n laj3) (ax -27.81))(HJ (n laj4) (ax -70.15))(HJ (n rlj1) (ax -13.67))(HJ (n rlj2) (ax 29.83))(HJ (n rlj3) (ax 18.83))(HJ (n rlj4) (ax -73.23))(HJ (n rlj5) (ax 28.48))(HJ (n rlj6) (ax -6.32))(HJ (n llj1) (ax -10.55))(HJ (n llj2) (ax 0.02))(HJ (n llj3) (ax 49.37))(HJ (n llj4) (ax -113.06))(HJ (n llj5) (ax 56.00))(HJ (n llj6) (ax 7.57)) +{Tue 20:37:35 Step:3409} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3411} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:35 Step:3411} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3414} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:35 Step:3414} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3415} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3417} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:35 Step:3417} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3422} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3477} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3479} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3482} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3483} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3488} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:37 Step:3491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3495} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:37 Step:3495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3499} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:37 Step:3499} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3502} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:37 Step:3503} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3506} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:37 Step:3507} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3509} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:37 Step:3509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3513} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:37 Step:3513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3516} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:37 Step:3517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3519} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:37 Step:3519} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:37 Step:3522} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 703.10))(GS (sl 0) (sr 0) (t 369.62) (pm PlayOn))(foul 7)(GYR (n torso) (rt -98.26 19.29 53.53))(ACC (n torso) (a -0.76 1.43 -2.95))(HJ (n hj1) (ax -35.10))(HJ (n hj2) (ax -34.94))(HJ (n raj1) (ax -106.02))(HJ (n raj2) (ax -1.12))(HJ (n raj3) (ax 38.75))(HJ (n raj4) (ax 57.00))(HJ (n laj1) (ax -102.07))(HJ (n laj2) (ax 1.10))(HJ (n laj3) (ax -38.76))(HJ (n laj4) (ax -57.72))(HJ (n rlj1) (ax -1.41))(HJ (n rlj2) (ax -40.60))(HJ (n rlj3) (ax 100.04))(HJ (n rlj4) (ax -130.01))(HJ (n rlj5) (ax 50.59))(HJ (n rlj6) (ax 15.45))(HJ (n llj1) (ax -3.28))(HJ (n llj2) (ax 2.96))(HJ (n llj3) (ax 100.02))(HJ (n llj4) (ax -130.01))(HJ (n llj5) (ax 35.49))(FRP (n lf) (c 0.05 0.08 -0.01) (f 80.15 -59.88 38.32))(HJ (n llj6) (ax -12.00)) +{Tue 20:37:37 Step:3523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3525} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:37 Step:3525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3528} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:37 Step:3529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3535} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:38 Step:3535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3538} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:38 Step:3538} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:38 Step:3539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3542} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:38 Step:3543} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3547} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:38 Step:3547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3550} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:38 Step:3551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3553} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:38 Step:3563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3566} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:38 Step:3573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3576} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3580} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3584} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3587} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3590} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3594} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3598} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3603} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3606} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3607} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3609} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3612} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3615} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3619} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3622} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3625} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3628} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3629} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3632} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3633} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3635} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3635} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3638} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3639} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3641} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3644} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3645} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3647} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3651} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3655} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3659} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3661} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3664} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:41 Step:3665} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3667} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3670} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:41 Step:3671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3673} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3677} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:41 Step:3677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3679} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3682} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:41 Step:3683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3685} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3687} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3689} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3689} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3692} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:41 Step:3693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3697} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3701} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:41 Step:3701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3704} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:41 Step:3705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3708} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3712} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3713} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3716} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3719} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3722} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3723} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3726} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3729} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3729} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3731} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3731} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3734} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3738} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3739} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3741} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3741} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3744} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3747} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3750} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3753} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3753} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3756} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3759} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3763} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3765} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3768} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3772} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3773} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3775} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3778} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3779} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3782} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3785} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3789} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3792} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3795} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3795} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3798} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3799} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3802} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3805} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3808} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3809} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3811} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3813} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3816} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3820} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3821} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3823} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3823} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3825} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3825} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3829} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3829} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3832} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3835} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3837} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3839} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3843} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3843} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3846} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:45 Step:3847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3850} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:45 Step:3851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3854} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:45 Step:3855} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3858} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:45 Step:3859} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3861} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3864} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:45 Step:3865} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3867} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3869} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3869} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3871} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3874} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:45 Step:3875} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3877} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3879} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3879} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3883} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:45 Step:3883} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3885} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3885} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3887} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3887} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3889} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3889} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3892} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3893} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3895} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:3895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3898} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3900} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:46 Step:3901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3904} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3907} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:3907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3910} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3914} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3917} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:3917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3919} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:3919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3921} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:3921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3925} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3925} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3928} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3929} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3932} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3937} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3937} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3940} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3944} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3945} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3948} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3949} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3952} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3953} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3956} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3957} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3959} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:47 Step:3959} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3963} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3963} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3966} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3967} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3970} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3971} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3973} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:47 Step:3973} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3977} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3977} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3980} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:3981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:3983} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:48 Step:3983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:3987} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:3987} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:3989} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:48 Step:3989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:3992} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:3993} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:3996} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:3997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:3999} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:48 Step:3999} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4002} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:4003} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4005} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:48 Step:4005} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4009} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:4009} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4013} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:4013} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4018} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:4019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4024} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:4025} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4029} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4032} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4036} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4040} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4041} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4045} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4048} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4051} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:49 Step:4051} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4055} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4057} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:49 Step:4057} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4060} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4061} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4064} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4065} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4067} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:49 Step:4067} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4071} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4071} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4075} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4075} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4079} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4079} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4082} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4083} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4085} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4085} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4087} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4087} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4089} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4089} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4092} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4093} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4095} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4095} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4098} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4098} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4099} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4102} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4103} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4106} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4107} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4109} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4109} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4112} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:51 Step:4113} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4116} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:51 Step:4117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4119} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4119} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4122} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:51 Step:4123} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4125} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4125} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4128} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:51 Step:4129} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4131} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4133} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4135} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4137} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4137} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4140} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:51 Step:4141} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4143} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4143} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4145} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4145} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4148} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:51 Step:4149} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4151} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4151} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4154} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:51 Step:4155} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4157} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4157} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4159} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4159} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4161} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4161} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4163} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4163} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4165} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4165} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4169} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:52 Step:4169} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4172} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:52 Step:4173} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4175} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4175} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4179} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:52 Step:4179} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4181} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4181} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4183} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4183} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4186} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:52 Step:4187} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4189} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:54 Step:4249} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4252} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4256} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4260} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 717.88))(GS (sl 0) (sr 0) (t 384.37) (pm PlayOn))(foul 7)(GYR (n torso) (rt 167.66 -141.55 216.27))(ACC (n torso) (a -0.31 -0.67 0.68))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax 0.00))(HJ (n raj1) (ax -89.06))(HJ (n raj2) (ax -4.89))(HJ (n raj3) (ax 48.91))(HJ (n raj4) (ax 77.46))(HJ (n laj1) (ax -85.78))(HJ (n laj2) (ax -0.73))(HJ (n laj3) (ax -48.64))(HJ (n laj4) (ax -76.21))(HJ (n rlj1) (ax -27.78))(HJ (n rlj2) (ax -30.88))(HJ (n rlj3) (ax 77.42))(HJ (n rlj4) (ax -121.48))(HJ (n rlj5) (ax 60.92))(FRP (n rf) (c 0.01 0.08 -0.01) (f 71.30 -3.12 23.99))(HJ (n rlj6) (ax 45.00))(HJ (n llj1) (ax -20.17))(HJ (n llj2) (ax 35.77))(HJ (n llj3) (ax 99.99))(HJ (n llj4) (ax -128.26))(HJ (n llj5) (ax 51.45))(FRP (n lf) (c -0.04 0.08 -0.01) (f -37.84 -16.02 39.22))(HJ (n llj6) (ax -45.11)) +{Tue 20:37:54 Step:4260} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4263} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:54 Step:4263} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4267} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4267} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4270} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4271} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4273} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:54 Step:4273} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4276} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4277} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4279} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:54 Step:4283} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4285} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:54 Step:4285} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4289} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4289} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4292} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4293} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4295} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4295} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4298} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4299} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4301} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4301} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4304} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4305} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4307} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4307} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4310} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4313} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4316} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4317} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4319} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4319} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4322} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4322} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:55 Step:4323} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4325} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4357} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4360} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4361} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4363} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4363} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4366} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4367} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 720.02))(GS (sl 0) (sr 0) (t 386.51) (pm PlayOn))(foul 7)(GYR (n torso) (rt 347.61 -3.73 -36.76))(ACC (n torso) (a -4.79 9.72 12.38))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.14 -32.16 10.81)) (llowerarm (pol 0.14 29.67 11.15))) (G1L (pol 3.68 49.68 -31.59)) (F1L (pol 9.43 -44.86 -43.54)) (mypos -11.37 1.30 0.22) (myorien 139.68) (ballpos -9.00 0.00 0.04) (L (pol 3.65 59.93 -40.77) (pol 9.44 -44.57 -43.67)) (L (pol 8.77 -60.17 -33.11) (pol 9.43 -44.66 -43.65)) (L (pol 2.51 -12.10 -57.12) (pol 2.02 22.64 -58.04)) (L (pol 2.50 -12.12 -57.31) (pol 4.01 20.56 -55.04)))(HJ (n raj1) (ax 22.27))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 61.73))(HJ (n raj4) (ax 84.12))(HJ (n laj1) (ax 22.27))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax -61.73))(HJ (n laj4) (ax -84.08))(HJ (n rlj1) (ax -26.58))(HJ (n rlj2) (ax 19.58))(HJ (n rlj3) (ax 5.29))(HJ (n rlj4) (ax 0.94))(HJ (n rlj5) (ax 61.26))(HJ (n rlj6) (ax 47.14))(HJ (n llj1) (ax -29.85))(HJ (n llj2) (ax -18.30))(HJ (n llj3) (ax 4.38))(HJ (n llj4) (ax 1.00))(HJ (n llj5) (ax 61.24))(HJ (n llj6) (ax -47.25)) +{Tue 20:37:56 Step:4367} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4371} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4453} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4456} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:58 Step:4457} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4460} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:58 Step:4461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4465} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4465} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4468} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4472} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4475} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4475} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4477} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4477} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4482} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4483} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4486} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4487} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4489} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4492} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4495} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4498} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4499} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4502} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4503} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4505} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4505} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4508} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4511} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4514} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4517} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4519} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4522} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4522} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:00 Step:4523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4525} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4565} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4567} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4569} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 724.06))(GS (sl 0) (sr 0) (t 390.54) (pm PlayOn))(foul 7)(GYR (n torso) (rt 6.19 -6.70 25.47))(ACC (n torso) (a 0.03 3.65 5.05))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.15 -28.01 -1.72)) (llowerarm (pol 0.15 25.33 -2.17))) (G1L (pol 3.78 12.59 -32.92)) (G2L (pol 4.49 42.45 -23.90)) (mypos -11.28 1.39 0.24) (myorien 177.33) (ballpos -9.00 0.00 0.04) (L (pol 5.35 60.05 -24.58) (pol 6.38 -60.06 -31.09)) (L (pol 2.52 -46.95 -40.93) (pol 2.67 59.86 -27.91)) (L (pol 2.53 -46.64 -40.99) (pol 4.06 -24.67 -44.99)))(HJ (n raj1) (ax 8.33))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 55.91))(HJ (n raj4) (ax 83.90))(HJ (n laj1) (ax 8.33))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax -55.84))(HJ (n laj4) (ax -83.91))(HJ (n rlj1) (ax -30.45))(HJ (n rlj2) (ax 26.65))(HJ (n rlj3) (ax 13.39))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax 52.86))(HJ (n rlj6) (ax 47.19))(HJ (n llj1) (ax -30.25))(HJ (n llj2) (ax -26.73))(HJ (n llj3) (ax 13.53))(HJ (n llj4) (ax 1.00))(HJ (n llj5) (ax 52.94))(HJ (n llj6) (ax -47.32)) +{Tue 20:38:01 Step:4570} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4573} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4660} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4666} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4670} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4674} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4677} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4680} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4683} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4687} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4691} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4694} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4697} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4701} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4712} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4713} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4715} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4721} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:06 Step:4783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4786} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4790} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4794} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4795} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4796} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 728.61))(GS (sl 0) (sr 0) (t 395.08) (pm PlayOn))(foul 7)(GYR (n torso) (rt 201.55 -136.60 88.69))(ACC (n torso) (a -2.59 0.34 -1.70))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.01))(HJ (n raj1) (ax -96.52))(HJ (n raj2) (ax -6.02))(HJ (n raj3) (ax 54.91))(HJ (n raj4) (ax 75.00))(HJ (n laj1) (ax -96.52))(HJ (n laj2) (ax -0.72))(HJ (n laj3) (ax -54.90))(HJ (n laj4) (ax -77.24))(HJ (n rlj1) (ax -12.18))(HJ (n rlj2) (ax -29.10))(HJ (n rlj3) (ax 63.74))(HJ (n rlj4) (ax -128.31))(HJ (n rlj5) (ax 52.19))(FRP (n rf) (c 0.04 0.08 -0.01) (f -46.92 -17.98 3.31))(HJ (n rlj6) (ax 45.00))(HJ (n llj1) (ax -12.02))(HJ (n llj2) (ax 29.12))(HJ (n llj3) (ax 100.00))(HJ (n llj4) (ax -114.27))(HJ (n llj5) (ax 52.22))(HJ (n llj6) (ax -32.19)) +{Tue 20:38:06 Step:4799} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4799} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4802} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4805} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:06 Step:4805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4808} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4813} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4816} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4821} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4824} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4825} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4827} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4830} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4830} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4831} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4833} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4837} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4839} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4841} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4841} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4845} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4853} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4853} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4854} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 729.77))(GS (sl 0) (sr 0) (t 396.24) (pm PlayOn))(foul 7)(GYR (n torso) (rt -18.10 -134.10 20.66))(ACC (n torso) (a 0.45 1.14 -1.39))(HJ (n hj1) (ax 63.52))(HJ (n hj2) (ax -35.01))(HJ (n raj1) (ax -93.45))(HJ (n raj2) (ax -8.49))(HJ (n raj3) (ax 10.61))(HJ (n raj4) (ax 69.98))(HJ (n laj1) (ax -69.88))(HJ (n laj2) (ax 9.26))(HJ (n laj3) (ax -90.02))(HJ (n laj4) (ax -77.20))(HJ (n rlj1) (ax -11.98))(HJ (n rlj2) (ax 8.78))(HJ (n rlj3) (ax 37.92))(HJ (n rlj4) (ax -57.98))(HJ (n rlj5) (ax 52.71))(HJ (n rlj6) (ax -1.13))(HJ (n llj1) (ax -20.29))(HJ (n llj2) (ax -3.25))(HJ (n llj3) (ax 100.00))(HJ (n llj4) (ax -86.31))(HJ (n llj5) (ax 61.63))(HJ (n llj6) (ax 5.91)) +{Tue 20:38:07 Step:4856} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4857} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4860} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4864} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4865} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4867} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:08 Step:4867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4870} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4873} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:08 Step:4873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4876} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4879} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4939} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4941} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4944} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4945} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4948} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4949} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4952} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4953} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4957} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4957} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4960} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4960} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:10 Step:4961} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4964} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4965} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4969} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4969} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4973} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4973} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4975} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 732.19))(GS (sl 0) (sr 0) (t 398.66) (pm PlayOn))(foul 7)(GYR (n torso) (rt 17.16 162.83 304.03))(ACC (n torso) (a 13.50 -2.85 -6.40))(HJ (n hj1) (ax 0.03))(HJ (n hj2) (ax 2.35))(See (P (team Gym) (id 1) (rlowerarm (pol 0.20 -38.96 -31.63)) (llowerarm (pol 0.20 32.91 -33.37)) (lfoot (pol 0.29 17.58 -23.91))) (F1L (pol 8.96 20.10 32.23)) (mypos -12.03 1.55 0.25) (myorien 110.39) (ballpos -9.00 0.00 0.04) (L (pol 3.07 60.09 -9.47) (pol 8.97 20.16 32.07)) (L (pol 11.00 -56.08 44.01) (pol 8.98 20.01 32.16)) (L (pol 1.88 32.51 15.40) (pol 1.19 60.15 -20.46)) (L (pol 1.88 32.33 15.21) (pol 3.31 52.45 -0.48)))(HJ (n raj1) (ax 8.57))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax -92.44))(HJ (n raj4) (ax 95.00))(HJ (n laj1) (ax 8.57))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax 92.33))(HJ (n laj4) (ax -95.13))(HJ (n rlj1) (ax -95.52))(HJ (n rlj2) (ax 26.84))(HJ (n rlj3) (ax 99.40))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax -50.83))(HJ (n rlj6) (ax 47.70))(HJ (n llj1) (ax -30.52))(HJ (n llj2) (ax 46.56))(HJ (n llj3) (ax 105.98))(HJ (n llj4) (ax 1.00))(HJ (n llj5) (ax -50.97))(HJ (n llj6) (ax -48.09)) +{Tue 20:38:10 Step:4978} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4979} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4981} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:10 Step:4981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4984} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4985} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4989} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:4989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4992} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:4993} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4996} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5003} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5007} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5007} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5009} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:5009} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5015} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5018} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5021} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:5021} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5023} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:5023} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5025} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:5025} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5028} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5031} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5031} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5034} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:12 Step:5035} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5037} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5040} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:13 Step:5105} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5107} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:5107} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5111} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:13 Step:5111} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5114} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:13 Step:5121} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5123} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:5123} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5125} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:14 Step:5125} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5129} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5137} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5139} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:14 Step:5139} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5142} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5142} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:14 Step:5143} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5144} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5145} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5148} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5153} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5155} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5159} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5159} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5163} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5213} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5216} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5220} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5221} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5223} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5223} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5225} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5225} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5229} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5233} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5236} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5237} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5239} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5239} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5243} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5243} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5245} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5249} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5255} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5257} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5260} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5267} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5269} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5281} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5282} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5283} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5285} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5285} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5288} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5289} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5291} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5293} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5293} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5297} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5297} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5299} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5333} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5333} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5336} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5337} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5339} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5341} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5341} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5344} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:20 Step:5437} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5439} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5441} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5441} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5443} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5443} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5446} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5447} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5449} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5449} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5452} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5463} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5465} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5465} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5469} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5473} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5477} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5477} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5481} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5484} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5487} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5487} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:22 Step:5493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5495} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5512} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5515} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5518} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5523} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5561} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5565} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5568} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5571} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:24 Step:5571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5574} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5589} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:24 Step:5589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5592} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5596} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5599} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:24 Step:5605} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5608} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5613} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5616} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5620} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5620} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:25 Step:5621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5624} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5627} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5627} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5635} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5638} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5639} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5641} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5643} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5645} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5645} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5647} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5649} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5652} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5658} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5662} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5671} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5675} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5681} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5683} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5685} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5687} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5691} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5695} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5699} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5699} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5701} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5704} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5719} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5747} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5751} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5753} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5753} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5757} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5760} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5764} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5768} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5772} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5773} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5775} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5780} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5783} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5785} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5788} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5792} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5796} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5797} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5799} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5799} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5802} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5805} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 748.81))(GS (sl 0) (sr 0) (t 415.25) (pm PlayOn))(foul 7)(GYR (n torso) (rt 166.22 16.33 153.67))(ACC (n torso) (a -11.81 -10.72 10.78))(HJ (n hj1) (ax -15.91))(HJ (n hj2) (ax 17.31))(See (G1L (pol 3.86 -29.55 -27.65)) (G2L (pol 4.25 3.47 -37.66)) (mypos -11.18 0.76 0.28) (myorien -165.65) (ballpos -9.00 0.00 0.04) (L (pol 10.61 60.05 -36.81) (pol 4.44 -60.01 -20.86)) (L (pol 2.29 -60.08 -25.55) (pol 4.27 53.33 -41.99)) (L (pol 4.42 -59.67 -21.06) (pol 4.44 -59.93 -20.84)) (L (pol 4.27 53.19 -41.97) (pol 5.37 30.34 -47.25)))(HJ (n raj1) (ax -75.66))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax -125.91))(HJ (n raj4) (ax 55.61))(HJ (n laj1) (ax -75.65))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax 126.48))(HJ (n laj4) (ax -55.96))(HJ (n rlj1) (ax -91.29))(HJ (n rlj2) (ax -49.86))(HJ (n rlj3) (ax 76.23))(HJ (n rlj4) (ax -83.06))(HJ (n rlj5) (ax 79.02))(HJ (n rlj6) (ax 48.07))(HJ (n llj1) (ax 4.72))(HJ (n llj2) (ax -29.03))(HJ (n llj3) (ax 69.26))(HJ (n llj4) (ax 1.00))(HJ (n llj5) (ax 78.73))(HJ (n llj6) (ax -47.96)) +{Tue 20:38:29 Step:5806} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5807} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5810} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5813} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5815} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5818} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5822} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5823} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5825} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:5825} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5828} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5828} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5840} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5909} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:32 Step:5909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5912} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5915} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:32 Step:5915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5919} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 751.09))(GS (sl 0) (sr 0) (t 417.53) (pm PlayOn))(foul 7)(GYR (n torso) (rt 440.72 37.41 -31.37))(ACC (n torso) (a 5.75 20.16 45.88))(HJ (n hj1) (ax -0.06))(HJ (n hj2) (ax 0.12))(See (P (team Gym) (id 1) (rlowerarm (pol 0.12 -35.16 20.27)) (llowerarm (pol 0.11 32.16 20.84))) (G1L (pol 3.98 -38.29 -35.65)) (G2L (pol 4.37 -2.03 -45.12)) (F2L (pol 11.45 59.57 -36.67)) (mypos -11.07 0.76 0.25) (myorien -155.63) (ballpos -9.00 0.00 0.04) (L (pol 11.45 59.25 -36.95) (pol 4.14 -60.08 -36.24)) (L (pol 11.41 60.19 -36.25) (pol 11.45 59.24 -36.82)) (L (pol 2.22 -60.14 -40.33) (pol 4.33 51.10 -44.37)) (L (pol 4.32 51.42 -44.46) (pol 5.45 29.11 -52.04)))(HJ (n raj1) (ax 36.26))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 47.65))(HJ (n raj4) (ax 90.18))(HJ (n laj1) (ax 36.26))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax -47.64))(HJ (n laj4) (ax -90.12))(HJ (n rlj1) (ax -36.51))(HJ (n rlj2) (ax 16.61))(HJ (n rlj3) (ax -6.45))(HJ (n rlj4) (ax 1.92))(HJ (n rlj5) (ax 69.39))(HJ (n rlj6) (ax 47.27))(HJ (n llj1) (ax -36.42))(HJ (n llj2) (ax -16.51))(HJ (n llj3) (ax -5.96))(HJ (n llj4) (ax 0.97))(HJ (n llj5) (ax 69.26))(HJ (n llj6) (ax -47.31)) +{Tue 20:38:32 Step:5919} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5922} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? diff --git a/logs/2025-11-04_20.36.22__EKCNHP/Gym_1.log b/logs/2025-11-04_20.36.22__EKCNHP/Gym_1.log new file mode 100644 index 0000000..197c19e --- /dev/null +++ b/logs/2025-11-04_20.36.22__EKCNHP/Gym_1.log @@ -0,0 +1,2294 @@ +{Tue 20:36:22 Step:1} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:22 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 93, +Msg: (time (now 634.84))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c -0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:22 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 101, +Msg: (time (now 634.84))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c -0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:22 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 109, +Msg: (time (now 634.84))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c -0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:22 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 117, +Msg: (time (now 634.84))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c -0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:22 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 125, +Msg: (time (now 634.84))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c -0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:22 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 133, +Msg: (time (now 634.84))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c -0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:22 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 141, +Msg: (time (now 634.84))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c -0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:22 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 149, +Msg: (time (now 634.84))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c -0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:22 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 157, +Msg: (time (now 634.84))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c -0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:32 Step:6} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:32 Step:485} Server_Comm.py: The agent lost 478 consecutive packets! Is syncmode disabled? +{Tue 20:36:32 Step:485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:487} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:32 Step:487} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:489} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:32 Step:489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:497} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:499} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:505} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:507} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:519} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:520} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:523} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:525} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:527} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:527} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:531} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:531} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:533} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:536} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:540} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:543} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:545} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:547} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:550} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:555} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:557} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:559} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:561} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:563} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:567} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:569} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:572} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:576} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:579} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:581} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:584} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:588} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:592} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:595} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:597} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:600} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:601} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:603} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:606} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:607} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:609} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:36 Step:631} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:634} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:635} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:638} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:639} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 647.55))(GS (sl 0) (sr 0) (t 312.59) (pm PlayOn))(foul 7)(GYR (n torso) (rt 59.82 0.00 -0.00))(ACC (n torso) (a 0.00 9.01 5.41))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax 0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.19 -43.11 -3.85)) (llowerarm (pol 0.19 43.24 -3.82)) (rfoot (pol 0.45 -3.57 -59.21)) (lfoot (pol 0.45 3.61 -59.10))) (G2R (pol 25.99 -3.71 -38.05)) (G1R (pol 25.91 2.30 -37.83)) (F1R (pol 27.71 26.35 -37.01)) (F2R (pol 27.89 -27.38 -36.62)) (B (pol 1.96 -10.20 -44.96)) (mypos -10.93 0.24 0.26) (myorien -0.00) (ballpos -9.00 0.00 0.04) (L (pol 14.99 -50.92 -28.33) (pol 14.68 49.78 -29.10)) (L (pol 27.87 -27.37 -36.72) (pol 27.70 25.91 -36.91)) (L (pol 27.73 26.31 -36.75) (pol 12.34 59.94 -23.74)) (L (pol 27.94 -27.43 -36.62) (pol 12.91 -59.79 -23.70)) (L (pol 24.28 8.40 -39.53) (pol 24.34 -9.95 -39.66)) (L (pol 24.25 8.41 -39.66) (pol 26.07 7.84 -39.67)) (L (pol 24.36 -10.00 -39.19) (pol 26.12 -9.69 -39.47)) (L (pol 12.94 -1.12 -40.42) (pol 12.58 5.46 -40.10)) (L (pol 12.59 5.53 -40.24) (pol 11.68 10.81 -39.93)) (L (pol 11.66 10.52 -39.88) (pol 10.45 12.14 -40.16)) (L (pol 10.44 11.56 -40.01) (pol 9.37 7.58 -40.59)) (L (pol 9.36 7.16 -40.59) (pol 8.93 -2.08 -40.96)) (L (pol 8.95 -1.87 -40.96) (pol 9.43 -11.37 -40.27)) (L (pol 9.42 -11.37 -40.31) (pol 10.53 -15.29 -39.83)) (L (pol 10.53 -15.44 -39.88) (pol 11.75 -13.78 -39.64)) (L (pol 11.74 -13.62 -39.96) (pol 12.63 -8.35 -40.18)) (L (pol 12.65 -8.32 -40.02) (pol 12.93 -1.45 -40.41)))(HJ (n raj1) (ax 8.32))(HJ (n raj2) (ax -27.02))(HJ (n raj3) (ax 47.68))(HJ (n raj4) (ax 84.20))(HJ (n laj1) (ax 8.32))(HJ (n laj2) (ax 27.02))(HJ (n laj3) (ax -47.68))(HJ (n laj4) (ax -84.20))(HJ (n rlj1) (ax -42.37))(HJ (n rlj2) (ax 26.24))(HJ (n rlj3) (ax 11.40))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax 52.71))(HJ (n rlj6) (ax 47.11))(HJ (n llj1) (ax -42.37))(HJ (n llj2) (ax -26.24))(HJ (n llj3) (ax 11.40))(HJ (n llj4) (ax 1.00))(HJ (n llj5) (ax 52.71))(HJ (n llj6) (ax -47.11)) +{Tue 20:36:36 Step:639} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:642} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:643} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:646} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:650} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:654} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:658} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:38 Step:749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:751} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:755} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:39 Step:755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:758} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:39 Step:759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:761} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:763} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:766} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:39 Step:767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:769} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:772} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:39 Step:773} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:777} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:779} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:779} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:782} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:39 Step:783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:786} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:39 Step:787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:789} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:791} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:810} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 650.97))(GS (sl 0) (sr 0) (t 316.00) (pm PlayOn))(foul 7)(GYR (n torso) (rt -111.27 49.03 10.41))(ACC (n torso) (a 0.10 -7.13 2.95))(HJ (n hj1) (ax -1.25))(HJ (n hj2) (ax -1.24))(HJ (n raj1) (ax -80.94))(HJ (n raj2) (ax -1.28))(HJ (n raj3) (ax 76.33))(HJ (n raj4) (ax 2.93))(HJ (n laj1) (ax -80.94))(HJ (n laj2) (ax 1.39))(HJ (n laj3) (ax -76.33))(HJ (n laj4) (ax -2.93))(HJ (n rlj1) (ax -75.98))(HJ (n rlj2) (ax -4.63))(HJ (n rlj3) (ax 8.89))(HJ (n rlj4) (ax -1.06))(HJ (n rlj5) (ax -6.74))(FRP (n rf) (c -0.04 0.08 -0.01) (f 34.14 27.61 2.43))(HJ (n rlj6) (ax 6.63))(HJ (n llj1) (ax -66.12))(HJ (n llj2) (ax 4.63))(HJ (n llj3) (ax 8.88))(HJ (n llj4) (ax -1.06))(HJ (n llj5) (ax -6.75))(FRP (n lf) (c 0.04 0.08 -0.01) (f -38.43 23.53 3.81))(HJ (n llj6) (ax -6.63)) +{Tue 20:36:40 Step:813} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 651.03))(GS (sl 0) (sr 0) (t 316.06) (pm PlayOn))(foul 7)(GYR (n torso) (rt -146.42 -36.09 -26.37))(ACC (n torso) (a -0.68 -6.29 2.48))(HJ (n hj1) (ax -0.91))(HJ (n hj2) (ax -0.90))(See (P (team Gym) (id 1) (rfoot (pol 0.51 -44.99 -55.43)) (lfoot (pol 0.52 46.19 -56.18))) (mypos -10.14 0.23 0.24) (myorien -172.19) (ballpos -9.00 0.00 0.04))(HJ (n raj1) (ax -83.39))(HJ (n raj2) (ax -0.93))(HJ (n raj3) (ax 80.04))(HJ (n raj4) (ax 2.13))(HJ (n laj1) (ax -80.94))(HJ (n laj2) (ax 1.39))(HJ (n laj3) (ax -76.34))(HJ (n laj4) (ax -2.93))(HJ (n rlj1) (ax -72.27))(HJ (n rlj2) (ax -3.38))(HJ (n rlj3) (ax 6.48))(HJ (n rlj4) (ax -0.77))(HJ (n rlj5) (ax -4.92))(FRP (n rf) (c -0.04 0.08 -0.01) (f 34.12 26.23 2.68))(HJ (n rlj6) (ax 4.83))(HJ (n llj1) (ax -66.12))(HJ (n llj2) (ax 4.81))(HJ (n llj3) (ax 8.88))(HJ (n llj4) (ax -1.06))(HJ (n llj5) (ax -6.75))(FRP (n lf) (c 0.04 0.08 -0.01) (f -36.78 20.65 0.89))(HJ (n llj6) (ax -6.63)) +{Tue 20:36:40 Step:819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:821} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:875} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:877} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:880} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:41 Step:881} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:883} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:883} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:887} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:887} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:890} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:893} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:893} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:897} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:929} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:930} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:935} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:935} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:937} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:939} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:941} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1031} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1033} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1035} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1035} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1037} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1041} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1043} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1043} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1045} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1058} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:45 Step:1059} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1062} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:46 Step:1065} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1068} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:46 Step:1069} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1071} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1071} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1074} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:46 Step:1075} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1078} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:46 Step:1091} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1095} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1097} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1097} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1099} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1099} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1102} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1135} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1137} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1139} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1139} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1141} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1143} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1145} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1145} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1147} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1147} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1149} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1150} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 657.78))(GS (sl 0) (sr 0) (t 322.80) (pm PlayOn))(foul 7)(GYR (n torso) (rt 70.71 -133.63 79.26))(ACC (n torso) (a 3.98 -16.59 -9.91))(HJ (n hj1) (ax 0.01))(HJ (n hj2) (ax 0.05))(HJ (n raj1) (ax 66.63))(HJ (n raj2) (ax -9.59))(HJ (n raj3) (ax 19.42))(HJ (n raj4) (ax -1.01))(HJ (n laj1) (ax 68.34))(HJ (n laj2) (ax 2.72))(HJ (n laj3) (ax -19.40))(HJ (n laj4) (ax 1.05))(HJ (n rlj1) (ax 5.05))(HJ (n rlj2) (ax 20.99))(HJ (n rlj3) (ax 33.36))(HJ (n rlj4) (ax -39.10))(HJ (n rlj5) (ax -12.17))(HJ (n rlj6) (ax -5.41))(HJ (n llj1) (ax 4.98))(HJ (n llj2) (ax -21.08))(HJ (n llj3) (ax 33.32))(HJ (n llj4) (ax -39.03))(HJ (n llj5) (ax -12.27))(HJ (n llj6) (ax 5.51)) +{Tue 20:36:47 Step:1151} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1153} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1153} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1155} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1185} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1187} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1187} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1190} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:50 Step:1255} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1258} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:50 Step:1259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1261} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1264} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:50 Step:1265} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1267} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1267} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1269} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1269} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1271} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 660.20))(GS (sl 0) (sr 0) (t 325.22) (pm PlayOn))(foul 7)(foul 7)(GYR (n torso) (rt -279.55 -44.44 35.39))(ACC (n torso) (a -7.29 -1.72 11.59))(HJ (n hj1) (ax 0.69))(HJ (n hj2) (ax -0.38))(See (P (team Gym) (id 1) (rfoot (pol 0.42 -46.11 -57.01)) (lfoot (pol 0.40 40.62 -55.54))) (G2R (pol 25.47 22.28 32.57)) (G1R (pol 25.50 27.43 31.01)) (F1R (pol 27.37 46.34 22.17)) (F2R (pol 27.40 -0.55 33.74)) (B (pol 1.52 16.92 17.76)) (mypos -10.47 0.09 0.43) (myorien -18.74) (ballpos -9.00 0.00 0.04) (L (pol 14.56 -27.08 31.32) (pol 13.01 59.99 13.66)) (L (pol 27.38 -0.21 34.02) (pol 27.31 46.59 22.03)) (L (pol 27.31 46.61 22.08) (pol 16.75 59.97 13.93)) (L (pol 27.44 -0.67 33.97) (pol 10.43 -59.92 19.73)) (L (pol 23.92 32.31 27.72) (pol 23.91 16.42 31.88)) (L (pol 23.83 32.27 27.70) (pol 25.64 31.75 28.23)) (L (pol 23.87 16.11 32.01) (pol 25.65 16.94 31.89)) (L (pol 12.45 23.64 29.26) (pol 12.15 29.71 27.61)) (L (pol 12.14 29.82 27.47) (pol 11.24 34.02 25.78)) (L (pol 11.23 34.01 25.80) (pol 10.03 35.25 25.24)) (L (pol 10.02 35.12 25.26) (pol 8.93 31.65 26.35)) (L (pol 8.91 31.49 26.11) (pol 8.49 23.16 28.33)) (L (pol 8.48 23.19 28.59) (pol 8.95 14.94 30.66)) (L (pol 8.96 14.87 30.46) (pol 10.04 11.11 31.58)) (L (pol 10.05 11.34 31.49) (pol 11.29 12.66 31.48)) (L (pol 11.28 12.89 31.31) (pol 12.15 17.37 30.79)) (L (pol 12.17 17.37 30.92) (pol 12.46 23.75 29.37)))(HJ (n raj1) (ax -115.35))(HJ (n raj2) (ax -5.44))(HJ (n raj3) (ax 68.41))(HJ (n raj4) (ax 75.39))(HJ (n laj1) (ax -116.35))(HJ (n laj2) (ax 6.21))(HJ (n laj3) (ax -68.17))(HJ (n laj4) (ax -76.39))(HJ (n rlj1) (ax -47.23))(HJ (n rlj2) (ax -16.54))(HJ (n rlj3) (ax 74.87))(HJ (n rlj4) (ax -92.63))(HJ (n rlj5) (ax 24.98))(FRP (n rf) (c 0.04 -0.08 -0.01) (f -13.05 -4.86 -0.80))(HJ (n rlj6) (ax 51.75))(HJ (n llj1) (ax -48.60))(HJ (n llj2) (ax 9.48))(HJ (n llj3) (ax 75.12))(HJ (n llj4) (ax -92.64))(HJ (n llj5) (ax 52.15))(FRP (n lf) (c -0.04 -0.08 -0.01) (f 40.38 2.93 27.45))(HJ (n llj6) (ax -45.01)) +{Tue 20:36:50 Step:1271} World_Parser.py: Unknown root tag: bytearray(b'foul') at 73, +Msg: (time (now 660.20))(GS (sl 0) (sr 0) (t 325.22) (pm PlayOn))(foul 7)(foul 7)(GYR (n torso) (rt -279.55 -44.44 35.39))(ACC (n torso) (a -7.29 -1.72 11.59))(HJ (n hj1) (ax 0.69))(HJ (n hj2) (ax -0.38))(See (P (team Gym) (id 1) (rfoot (pol 0.42 -46.11 -57.01)) (lfoot (pol 0.40 40.62 -55.54))) (G2R (pol 25.47 22.28 32.57)) (G1R (pol 25.50 27.43 31.01)) (F1R (pol 27.37 46.34 22.17)) (F2R (pol 27.40 -0.55 33.74)) (B (pol 1.52 16.92 17.76)) (mypos -10.47 0.09 0.43) (myorien -18.74) (ballpos -9.00 0.00 0.04) (L (pol 14.56 -27.08 31.32) (pol 13.01 59.99 13.66)) (L (pol 27.38 -0.21 34.02) (pol 27.31 46.59 22.03)) (L (pol 27.31 46.61 22.08) (pol 16.75 59.97 13.93)) (L (pol 27.44 -0.67 33.97) (pol 10.43 -59.92 19.73)) (L (pol 23.92 32.31 27.72) (pol 23.91 16.42 31.88)) (L (pol 23.83 32.27 27.70) (pol 25.64 31.75 28.23)) (L (pol 23.87 16.11 32.01) (pol 25.65 16.94 31.89)) (L (pol 12.45 23.64 29.26) (pol 12.15 29.71 27.61)) (L (pol 12.14 29.82 27.47) (pol 11.24 34.02 25.78)) (L (pol 11.23 34.01 25.80) (pol 10.03 35.25 25.24)) (L (pol 10.02 35.12 25.26) (pol 8.93 31.65 26.35)) (L (pol 8.91 31.49 26.11) (pol 8.49 23.16 28.33)) (L (pol 8.48 23.19 28.59) (pol 8.95 14.94 30.66)) (L (pol 8.96 14.87 30.46) (pol 10.04 11.11 31.58)) (L (pol 10.05 11.34 31.49) (pol 11.29 12.66 31.48)) (L (pol 11.28 12.89 31.31) (pol 12.15 17.37 30.79)) (L (pol 12.17 17.37 30.92) (pol 12.46 23.75 29.37)))(HJ (n raj1) (ax -115.35))(HJ (n raj2) (ax -5.44))(HJ (n raj3) (ax 68.41))(HJ (n raj4) (ax 75.39))(HJ (n laj1) (ax -116.35))(HJ (n laj2) (ax 6.21))(HJ (n laj3) (ax -68.17))(HJ (n laj4) (ax -76.39))(HJ (n rlj1) (ax -47.23))(HJ (n rlj2) (ax -16.54))(HJ (n rlj3) (ax 74.87))(HJ (n rlj4) (ax -92.63))(HJ (n rlj5) (ax 24.98))(FRP (n rf) (c 0.04 -0.08 -0.01) (f -13.05 -4.86 -0.80))(HJ (n rlj6) (ax 51.75))(HJ (n llj1) (ax -48.60))(HJ (n llj2) (ax 9.48))(HJ (n llj3) (ax 75.12))(HJ (n llj4) (ax -92.64))(HJ (n llj5) (ax 52.15))(FRP (n lf) (c -0.04 -0.08 -0.01) (f 40.38 2.93 27.45))(HJ (n llj6) (ax -45.01)) +{Tue 20:36:50 Step:1272} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:50 Step:1273} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1276} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:50 Step:1277} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1279} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1281} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1283} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1283} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1285} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1285} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1288} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:50 Step:1289} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1291} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1291} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1293} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1293} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1295} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:51 Step:1295} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1298} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:51 Step:1299} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1301} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:51 Step:1301} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1303} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:51 Step:1303} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1305} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:51 Step:1305} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1307} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:51 Step:1307} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1310} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:51 Step:1311} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1321} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1323} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:51 Step:1323} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1325} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:51 Step:1325} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1369} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1371} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1373} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1373} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1376} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:52 Step:1377} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1379} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1379} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1381} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1381} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1384} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1385} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1387} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1387} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1390} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1391} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1393} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1393} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1397} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1397} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1399} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1399} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1403} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1403} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1406} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1407} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1410} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1410} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:53 Step:1411} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1415} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1415} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1418} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1425} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1425} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1427} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1427} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1429} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1429} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1432} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1483} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1483} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1486} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1487} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1489} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1492} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1492} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1495} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1499} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1515} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1517} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1520} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1524} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1529} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:56 Step:1533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1535} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:56 Step:1535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1537} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:56 Step:1537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1541} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:56 Step:1571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1573} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:56 Step:1573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1576} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:57 Step:1579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1582} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:57 Step:1591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1593} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1595} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1598} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:57 Step:1601} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1604} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:57 Step:1607} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1609} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1613} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:57 Step:1613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1616} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:57 Step:1617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1619} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1623} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:58 Step:1631} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:58 Step:1634} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:58 Step:1635} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1637} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1637} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1639} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1639} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1640} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 667.59))(GS (sl 0) (sr 0) (t 332.60) (pm PlayOn))(foul 7)(GYR (n torso) (rt -53.01 -245.44 -67.00))(ACC (n torso) (a 0.01 -1.11 -4.38))(HJ (n hj1) (ax 34.79))(HJ (n hj2) (ax -35.02))(HJ (n raj1) (ax -119.80))(HJ (n raj2) (ax -9.22))(HJ (n raj3) (ax 89.88))(HJ (n raj4) (ax 71.20))(HJ (n laj1) (ax -70.91))(HJ (n laj2) (ax 19.09))(HJ (n laj3) (ax -89.93))(HJ (n laj4) (ax -72.14))(HJ (n rlj1) (ax -36.29))(HJ (n rlj2) (ax 20.25))(HJ (n rlj3) (ax 7.31))(HJ (n rlj4) (ax -99.28))(HJ (n rlj5) (ax 39.73))(FRP (n rf) (c -0.01 0.08 -0.01) (f 36.84 -16.03 22.88))(HJ (n rlj6) (ax -19.42))(HJ (n llj1) (ax -13.45))(HJ (n llj2) (ax -15.30))(HJ (n llj3) (ax 5.57))(HJ (n llj4) (ax -116.15))(HJ (n llj5) (ax 50.00))(HJ (n llj6) (ax 18.31)) +{Tue 20:36:58 Step:1641} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1657} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1660} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:58 Step:1661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1663} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1665} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1665} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1670} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:58 Step:1671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1673} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1741} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1743} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1745} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1747} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1750} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:00 Step:1751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1753} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1753} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1755} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1758} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:00 Step:1765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1767} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1769} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1772} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:00 Step:1772} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1773} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1775} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:01 Step:1775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1777} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:01 Step:1777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1779} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:01 Step:1779} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1782} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:01 Step:1783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1785} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:01 Step:1785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1787} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:01 Step:1789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1793} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:01 Step:1793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1796} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:01 Step:1797} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1800} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:01 Step:1801} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1803} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:01 Step:1803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1806} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:01 Step:1807} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1810} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:01 Step:1811} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:01 Step:1813} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:01 Step:1813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1816} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:01 Step:1819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1821} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:01 Step:1821} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:02 Step:1859} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1861} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:02 Step:1861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1863} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:02 Step:1863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1865} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:02 Step:1865} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1868} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:02 Step:1869} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1871} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:03 Step:1871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1875} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:03 Step:1889} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1892} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1893} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1896} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1899} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:03 Step:1899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1902} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1902} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1906} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1906} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:03 Step:1907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1908} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 672.95))(GS (sl 0) (sr 0) (t 337.95) (pm PlayOn))(foul 7)(GYR (n torso) (rt 64.07 -126.90 -216.68))(ACC (n torso) (a -1.98 -7.81 5.63))(HJ (n hj1) (ax 0.88))(HJ (n hj2) (ax 0.44))(HJ (n raj1) (ax -121.11))(HJ (n raj2) (ax 0.98))(HJ (n raj3) (ax 79.26))(HJ (n raj4) (ax 83.21))(HJ (n laj1) (ax -122.10))(HJ (n laj2) (ax -0.40))(HJ (n laj3) (ax -76.54))(HJ (n laj4) (ax -75.21))(HJ (n rlj1) (ax -66.42))(HJ (n rlj2) (ax -28.38))(HJ (n rlj3) (ax 6.45))(HJ (n rlj4) (ax -87.34))(HJ (n rlj5) (ax 55.43))(FRP (n rf) (c 0.04 -0.08 -0.01) (f 14.16 31.56 39.64))(HJ (n rlj6) (ax 46.56))(HJ (n llj1) (ax -0.99))(HJ (n llj2) (ax 34.90))(HJ (n llj3) (ax 41.31))(HJ (n llj4) (ax -85.30))(HJ (n llj5) (ax -11.00))(FRP (n lf) (c -0.04 0.08 -0.01) (f -28.22 27.65 22.25))(HJ (n llj6) (ax -46.36)) +{Tue 20:37:03 Step:1911} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1913} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:03 Step:1915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1919} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:04 Step:1919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1922} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:04 Step:1922} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:04 Step:1923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1925} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:1925} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1928} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:04 Step:1931} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1934} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:04 Step:1935} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1938} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:1995} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:1997} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:1997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2000} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:2001} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2003} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2003} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2007} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2009} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2009} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2011} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2013} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2013} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2015} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2018} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:2019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2021} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2021} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2023} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2023} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2025} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2025} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2027} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2027} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2029} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2032} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:2033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2035} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2035} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2038} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:2039} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:06 Step:2041} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2041} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2043} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2043} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2045} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 675.70))(GS (sl 0) (sr 0) (t 340.69) (pm PlayOn))(foul 7)(GYR (n torso) (rt 10.85 -202.54 315.66))(ACC (n torso) (a 9.52 -9.58 4.40))(HJ (n hj1) (ax -29.49))(HJ (n hj2) (ax 22.34))(See (G2R (pol 25.54 -2.23 -18.01)) (G1R (pol 25.40 2.38 -16.80)) (F1R (pol 27.07 21.18 -10.01)) (F2R (pol 27.50 -21.32 -25.39)) (B (pol 1.52 -16.01 -33.92)) (mypos -10.41 0.52 0.30) (myorien 5.35) (ballpos -9.00 0.00 0.04) (L (pol 14.80 -46.92 -29.06) (pol 14.08 40.92 -0.72)) (L (pol 27.53 -21.52 -25.35) (pol 27.14 21.06 -9.94)) (L (pol 27.12 20.96 -10.22) (pol 10.59 60.10 8.86)) (L (pol 27.51 -21.55 -25.47) (pol 12.53 -59.93 -29.23)) (L (pol 23.75 7.36 -16.19) (pol 23.87 -6.32 -21.63)) (L (pol 23.72 7.57 -16.13) (pol 25.53 7.52 -16.46)) (L (pol 23.90 -6.69 -21.53) (pol 25.69 -6.10 -21.31)) (L (pol 12.42 -0.07 -20.24) (pol 12.05 5.24 -18.08)) (L (pol 12.04 5.21 -18.06) (pol 11.12 9.16 -16.35)) (L (pol 11.11 9.06 -16.49) (pol 9.91 9.96 -16.31)) (L (pol 9.89 9.84 -16.50) (pol 8.82 6.65 -18.10)) (L (pol 8.81 6.27 -18.13) (pol 8.43 -1.16 -21.05)) (L (pol 8.42 -1.23 -21.14) (pol 8.94 -8.52 -23.47)) (L (pol 8.96 -8.62 -23.53) (pol 10.10 -12.17 -24.04)) (L (pol 10.08 -11.81 -24.32) (pol 11.29 -10.44 -23.64)) (L (pol 11.30 -10.38 -23.63) (pol 12.14 -5.76 -22.08)) (L (pol 12.14 -5.81 -22.23) (pol 12.43 -0.22 -19.96)))(HJ (n raj1) (ax -24.43))(HJ (n raj2) (ax -1.92))(HJ (n raj3) (ax -126.08))(HJ (n raj4) (ax 92.37))(HJ (n laj1) (ax -24.43))(HJ (n laj2) (ax 1.89))(HJ (n laj3) (ax 126.50))(HJ (n laj4) (ax -93.12))(HJ (n rlj1) (ax -96.21))(HJ (n rlj2) (ax -49.12))(HJ (n rlj3) (ax 23.29))(HJ (n rlj4) (ax 2.34))(HJ (n rlj5) (ax -45.02))(FRP (n rf) (c -0.04 -0.09 -0.00) (f 25.98 -25.83 76.88))(HJ (n rlj6) (ax -30.33))(HJ (n llj1) (ax -42.04))(HJ (n llj2) (ax 48.08))(HJ (n llj3) (ax 103.00))(HJ (n llj4) (ax 2.45))(HJ (n llj5) (ax -41.58))(HJ (n llj6) (ax 30.60)) +{Tue 20:37:06 Step:2046} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:2047} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2049} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2052} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:2053} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2055} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2058} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:2058} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2059} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2062} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:2062} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:06 Step:2063} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2065} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2065} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2066} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 676.12))(GS (sl 0) (sr 0) (t 341.11) (pm PlayOn))(foul 7)(GYR (n torso) (rt -110.29 -122.71 41.14))(ACC (n torso) (a 13.48 -14.59 12.31))(HJ (n hj1) (ax 16.99))(HJ (n hj2) (ax 43.61))(HJ (n raj1) (ax -79.05))(HJ (n raj2) (ax 4.94))(HJ (n raj3) (ax -120.01))(HJ (n raj4) (ax 86.24))(HJ (n laj1) (ax -37.28))(HJ (n laj2) (ax 0.89))(HJ (n laj3) (ax 119.94))(HJ (n laj4) (ax -86.11))(HJ (n rlj1) (ax -89.41))(HJ (n rlj2) (ax -42.97))(HJ (n rlj3) (ax 96.43))(HJ (n rlj4) (ax -2.79))(HJ (n rlj5) (ax 73.42))(HJ (n rlj6) (ax -25.23))(HJ (n llj1) (ax -56.03))(HJ (n llj2) (ax 41.14))(HJ (n llj3) (ax 98.66))(HJ (n llj4) (ax -3.05))(HJ (n llj5) (ax -41.55))(HJ (n llj6) (ax 23.93)) +{Tue 20:37:07 Step:2069} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:07 Step:2069} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2071} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2075} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2077} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2077} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2079} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2079} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2107} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2110} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:07 Step:2111} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2113} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:08 Step:2113} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2116} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2120} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2121} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2123} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:08 Step:2123} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2127} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2127} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2129} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:08 Step:2129} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2132} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2136} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2137} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2140} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:09 Step:2193} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2195} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2195} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2197} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2197} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2200} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:09 Step:2201} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2203} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2203} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2206} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:09 Step:2207} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2210} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2211} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2213} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:10 Step:2213} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2217} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2220} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2223} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2225} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:10 Step:2225} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2230} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2231} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2233} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:10 Step:2233} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:10 Step:2235} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2237} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:10 Step:2237} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2239} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:10 Step:2239} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2242} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2243} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2245} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:10 Step:2245} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2249} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2299} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2302} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2303} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2305} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2305} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2307} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2307} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2311} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:12 Step:2321} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2323} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2323} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2325} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2325} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2329} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:12 Step:2329} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2331} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2333} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2425} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2427} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2427} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2429} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2429} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2431} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2431} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2433} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2433} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2441} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:15 Step:2453} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2458} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:15 Step:2458} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2459} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2461} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:15 Step:2461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2464} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:15 Step:2465} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2467} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:15 Step:2467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2469} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:15 Step:2469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2473} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:15 Step:2473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2481} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:15 Step:2481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2483} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2485} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:15 Step:2485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2487} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:15 Step:2487} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2489} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2541} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2544} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:16 Step:2544} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2548} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2551} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:17 Step:2551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2554} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2566} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2570} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2575} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2579} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 686.39))(GS (sl 0) (sr 0) (t 351.37) (pm PlayOn))(foul 7)(GYR (n torso) (rt 68.00 179.21 -133.48))(ACC (n torso) (a -23.42 -24.22 19.17))(HJ (n hj1) (ax -0.30))(HJ (n hj2) (ax -0.61))(See (P (team Gym) (id 1) (rlowerarm (pol 0.28 -48.61 -55.11)) (llowerarm (pol 0.29 54.30 -48.80)) (rfoot (pol 0.35 -49.24 -58.65))) (G2R (pol 25.28 49.75 45.54)) (G1R (pol 25.30 54.09 41.66)) (F2R (pol 27.37 24.70 56.31)) (B (pol 1.39 18.15 45.84)) (mypos -10.27 0.49 0.33) (myorien -20.99) (ballpos -9.00 0.00 0.04) (L (pol 12.54 2.13 60.08) (pol 10.56 59.95 30.29)) (L (pol 27.35 24.77 56.44) (pol 25.83 60.00 32.07)) (L (pol 27.28 24.87 56.32) (pol 20.37 9.99 59.44)) (L (pol 23.61 55.75 36.72) (pol 23.71 42.94 47.66)) (L (pol 23.59 55.86 36.71) (pol 25.41 55.68 37.21)) (L (pol 23.69 42.79 47.82) (pol 25.56 43.55 47.33)) (L (pol 12.26 48.14 42.84) (pol 11.90 52.78 38.59)) (L (pol 11.91 52.76 38.37) (pol 10.98 55.92 35.26)) (L (pol 10.98 55.68 35.34) (pol 9.75 56.60 34.31)) (L (pol 9.75 56.44 34.31) (pol 8.69 53.38 37.04)) (L (pol 8.68 53.42 37.10) (pol 8.29 46.59 43.10)) (L (pol 8.28 46.48 43.10) (pol 8.80 38.56 48.30)) (L (pol 8.82 38.78 48.56) (pol 9.94 35.67 50.64)) (L (pol 9.95 35.63 50.39) (pol 11.15 37.93 49.62)) (L (pol 11.15 37.36 49.68) (pol 12.00 42.79 46.93)) (L (pol 12.00 42.86 47.04) (pol 12.28 48.26 42.65)))(HJ (n raj1) (ax -65.64))(HJ (n raj2) (ax -11.13))(HJ (n raj3) (ax 49.71))(HJ (n raj4) (ax 27.54))(HJ (n laj1) (ax -62.04))(HJ (n laj2) (ax 24.63))(HJ (n laj3) (ax -49.90))(HJ (n laj4) (ax -27.87))(HJ (n rlj1) (ax -43.16))(HJ (n rlj2) (ax -23.21))(HJ (n rlj3) (ax 105.52))(HJ (n rlj4) (ax -131.33))(HJ (n rlj5) (ax 31.03))(FRP (n rf) (c 0.05 0.09 -0.03) (f 69.71 27.94 23.03))(HJ (n rlj6) (ax 45.17))(HJ (n llj1) (ax -9.83))(HJ (n llj2) (ax 17.17))(HJ (n llj3) (ax 101.15))(HJ (n llj4) (ax -134.64))(HJ (n llj5) (ax 30.50))(FRP (n lf) (c -0.05 0.09 -0.01) (f -54.56 19.77 29.07))(HJ (n llj6) (ax -45.06)) +{Tue 20:37:17 Step:2579} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2585} Server_Comm.py: The agent lost 5 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2589} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2598} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2603} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2608} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2612} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2616} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2619} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:18 Step:2619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2623} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2625} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:18 Step:2625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2629} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2631} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2633} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:18 Step:2633} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2636} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2637} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2640} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2640} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2643} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:18 Step:2643} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2646} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2649} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2652} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2655} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2659} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2661} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2664} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2699} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2699} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2702} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2702} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2705} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2709} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2712} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2713} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2716} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2720} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2745} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2748} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:21 Step:2749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2751} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:21 Step:2753} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2755} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:21 Step:2755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2758} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:21 Step:2759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2761} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:21 Step:2761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2763} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:21 Step:2763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2766} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2805} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2808} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2809} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2811} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2813} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2816} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:24 Step:2911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2913} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:24 Step:2913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2915} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:24 Step:2915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2918} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:24 Step:2919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2921} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:24 Step:2921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2923} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:24 Step:2923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2926} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:24 Step:2937} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2940} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:24 Step:2940} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2944} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2944} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2945} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2948} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2949} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2951} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2954} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2955} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2957} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2957} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2959} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2959} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2963} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2963} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2966} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2966} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:25 Step:2967} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2969} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2969} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2972} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2972} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:25 Step:2973} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2975} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2975} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2979} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2979} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2981} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2984} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2985} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2987} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2987} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2991} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:26 Step:2991} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:2993} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:2993} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:26 Step:2999} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3001} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:3001} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3003} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 694.88))(GS (sl 0) (sr 0) (t 359.84) (pm PlayOn))(foul 7)(GYR (n torso) (rt -31.13 82.91 155.60))(ACC (n torso) (a -3.20 -18.67 29.23))(HJ (n hj1) (ax -39.75))(HJ (n hj2) (ax -22.25))(See (P (team Gym) (id 1) (rlowerarm (pol 0.29 -36.16 -28.37)) (llowerarm (pol 0.27 55.89 -52.64)) (rfoot (pol 0.49 14.66 -57.21))) (F2L (pol 11.68 -55.61 -18.78)) (mypos -9.69 0.40 0.28) (myorien -110.08) (ballpos -9.00 0.00 0.04) (L (pol 11.66 -55.76 -18.46) (pol 6.22 -47.06 -49.62)) (L (pol 10.46 -60.01 14.12) (pol 11.66 -55.73 -18.61)) (L (pol 4.04 -44.46 -51.17) (pol 4.90 -50.06 -37.31)) (L (pol 4.90 -50.02 -37.00) (pol 6.32 -47.83 -48.45)))(HJ (n raj1) (ax -107.98))(HJ (n raj2) (ax -37.40))(HJ (n raj3) (ax 107.69))(HJ (n raj4) (ax 53.56))(HJ (n laj1) (ax -68.09))(HJ (n laj2) (ax -1.33))(HJ (n laj3) (ax -105.20))(HJ (n laj4) (ax -13.56))(HJ (n rlj1) (ax -35.46))(HJ (n rlj2) (ax 12.92))(HJ (n rlj3) (ax 28.59))(HJ (n rlj4) (ax -82.24))(HJ (n rlj5) (ax 20.13))(FRP (n rf) (c -0.01 0.08 -0.00) (f -6.25 -14.32 33.91))(HJ (n rlj6) (ax 28.63))(HJ (n llj1) (ax -43.35))(HJ (n llj2) (ax 27.90))(HJ (n llj3) (ax 72.27))(HJ (n llj4) (ax -47.74))(HJ (n llj5) (ax -28.24))(HJ (n llj6) (ax 12.29)) +{Tue 20:37:26 Step:3003} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:3003} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3006} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:26 Step:3027} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3029} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:3029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3031} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:3031} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3035} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:3035} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3037} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:3037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3039} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3039} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3041} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3041} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3043} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3043} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3045} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3047} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3047} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3049} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3052} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:27 Step:3055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3057} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3057} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3059} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3059} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3062} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:27 Step:3063} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3065} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3065} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3067} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3067} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3068} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3069} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3071} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3071} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3073} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3073} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3075} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3075} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3078} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:27 Step:3079} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3081} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3081} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3083} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3083} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3086} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:28 Step:3133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3136} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:29 Step:3137} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3140} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:29 Step:3141} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3143} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 697.68))(GS (sl 0) (sr 0) (t 362.64) (pm PlayOn))(foul 7)(GYR (n torso) (rt 131.42 117.53 -60.41))(ACC (n torso) (a -3.94 6.42 -14.97))(HJ (n hj1) (ax 0.03))(HJ (n hj2) (ax 0.08))(See (P (team Gym) (id 1) (rfoot (pol 0.37 -44.03 -54.32))) (G2R (pol 24.83 44.28 28.00)) (G1R (pol 24.79 48.89 25.53)) (F2R (pol 26.82 22.60 34.24)) (B (pol 0.93 14.59 12.34)) (mypos -9.78 0.35 0.42) (myorien -38.23) (ballpos -9.00 0.00 0.04) (L (pol 14.23 -6.39 37.32) (pol 10.16 60.33 15.07)) (L (pol 26.86 22.83 34.17) (pol 25.64 59.79 16.76)) (L (pol 26.88 22.61 34.24) (pol 10.38 -59.97 22.94)) (L (pol 23.12 52.61 21.03) (pol 23.23 38.29 28.77)) (L (pol 23.13 52.67 21.25) (pol 24.95 52.07 21.64)) (L (pol 23.22 38.22 28.55) (pol 25.01 38.89 28.42)) (L (pol 11.81 44.50 24.48) (pol 11.41 49.92 21.84)) (L (pol 11.44 50.07 21.87) (pol 10.50 53.45 19.24)) (L (pol 10.52 53.62 19.09) (pol 9.31 54.32 18.57)) (L (pol 9.28 54.38 18.32) (pol 8.21 50.97 20.08)) (L (pol 8.20 50.92 20.26) (pol 7.79 43.03 24.12)) (L (pol 7.81 42.88 24.33) (pol 8.31 35.13 27.89)) (L (pol 8.32 35.25 28.06) (pol 9.44 31.87 29.54)) (L (pol 9.43 31.96 29.55) (pol 10.64 33.56 29.01)) (L (pol 10.63 33.82 29.21) (pol 11.48 38.36 27.53)) (L (pol 11.50 38.72 27.62) (pol 11.79 44.60 24.72)))(HJ (n raj1) (ax -80.90))(HJ (n raj2) (ax 4.27))(HJ (n raj3) (ax 48.90))(HJ (n raj4) (ax 77.22))(HJ (n laj1) (ax -86.78))(HJ (n laj2) (ax -1.89))(HJ (n laj3) (ax -48.99))(HJ (n laj4) (ax -77.07))(HJ (n rlj1) (ax -26.33))(HJ (n rlj2) (ax -30.72))(HJ (n rlj3) (ax 102.28))(HJ (n rlj4) (ax -110.06))(HJ (n rlj5) (ax 51.19))(HJ (n rlj6) (ax 25.42))(HJ (n llj1) (ax -22.57))(HJ (n llj2) (ax 33.96))(HJ (n llj3) (ax 64.80))(HJ (n llj4) (ax -109.69))(HJ (n llj5) (ax 51.26))(HJ (n llj6) (ax -25.45)) +{Tue 20:37:29 Step:3145} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:29 Step:3145} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3147} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3147} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3150} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:29 Step:3151} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3153} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3153} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3157} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:29 Step:3157} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3161} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:29 Step:3161} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3163} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3163} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3165} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3165} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3167} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3167} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3169} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3169} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3171} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3171} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3173} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3173} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3175} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3175} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3183} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3185} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3191} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3193} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3193} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3207} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3209} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3209} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3211} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3211} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3214} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:30 Step:3217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3220} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:30 Step:3221} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3223} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3223} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3225} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3225} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3227} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3227} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3229} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3267} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3269} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3269} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3271} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3271} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3274} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3285} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3291} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:32 Step:3291} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3293} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:32 Step:3293} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3295} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:32 Step:3295} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3298} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3299} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3301} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:32 Step:3301} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3304} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3305} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3307} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:32 Step:3307} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3312} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3312} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3313} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3315} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:32 Step:3315} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3367} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3369} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3371} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3373} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 702.28))(GS (sl 0) (sr 0) (t 367.24) (pm PlayOn))(foul 7)(GYR (n torso) (rt -17.12 -0.15 0.29))(ACC (n torso) (a -0.02 13.83 9.46))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax 0.02))(See (P (team Gym) (id 1) (rlowerarm (pol 0.16 -23.76 -16.21)) (llowerarm (pol 0.16 23.48 -16.47)) (rfoot (pol 0.45 -5.45 -57.38)) (lfoot (pol 0.45 5.33 -57.43))) (G2R (pol 25.11 19.53 -42.20)) (G1R (pol 25.23 25.39 -40.86)) (F1R (pol 27.22 48.77 -34.31)) (F2R (pol 26.94 -7.37 -45.52)) (B (pol 1.22 51.80 -43.39)) (mypos -10.14 -0.41 0.24) (myorien -15.75) (ballpos -9.00 0.00 0.04) (L (pol 13.94 -37.15 -39.84) (pol 12.21 60.09 -28.08)) (L (pol 26.89 -7.19 -45.44) (pol 27.21 48.39 -34.04)) (L (pol 27.22 48.40 -34.52) (pol 18.43 59.91 -27.61)) (L (pol 26.89 -7.28 -45.46) (pol 10.54 -60.01 -28.13)) (L (pol 23.60 32.50 -40.88) (pol 23.46 13.40 -45.00)) (L (pol 23.57 32.76 -41.13) (pol 25.38 31.92 -40.96)) (L (pol 23.50 13.28 -44.94) (pol 25.31 14.06 -45.03)) (L (pol 12.15 24.90 -43.70) (pol 11.87 32.09 -42.02)) (L (pol 11.86 32.11 -41.80) (pol 11.01 37.61 -40.04)) (L (pol 11.00 37.59 -40.00) (pol 9.80 39.48 -39.23)) (L (pol 9.79 39.07 -39.73) (pol 8.68 35.85 -40.99)) (L (pol 8.66 35.77 -40.87) (pol 8.15 26.02 -43.77)) (L (pol 8.17 26.06 -43.79) (pol 8.55 15.34 -45.87)) (L (pol 8.56 15.28 -45.79) (pol 9.64 9.72 -46.21)) (L (pol 9.64 9.69 -46.02) (pol 10.85 11.42 -45.92)) (L (pol 10.85 11.36 -45.70) (pol 11.79 17.14 -45.16)) (L (pol 11.78 16.93 -44.94) (pol 12.13 24.98 -43.56)))(HJ (n raj1) (ax -5.71))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 48.58))(HJ (n raj4) (ax 83.93))(HJ (n laj1) (ax -5.71))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax -48.57))(HJ (n laj4) (ax -83.91))(HJ (n rlj1) (ax -37.92))(HJ (n rlj2) (ax 26.69))(HJ (n rlj3) (ax 21.21))(HJ (n rlj4) (ax -4.33))(HJ (n rlj5) (ax 44.50))(HJ (n rlj6) (ax 39.91))(HJ (n llj1) (ax -37.87))(HJ (n llj2) (ax -26.69))(HJ (n llj3) (ax 21.18))(HJ (n llj4) (ax -4.28))(HJ (n llj5) (ax 44.43))(HJ (n llj6) (ax -39.89)) +{Tue 20:37:33 Step:3374} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:33 Step:3374} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:33 Step:3375} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3378} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3482} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3483} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3487} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3487} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3489} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3492} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3497} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3499} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3499} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3501} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3501} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3503} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3503} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3505} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3505} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3507} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3507} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3510} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:38 Step:3575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3577} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:38 Step:3577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3580} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:38 Step:3581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3583} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:38 Step:3583} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3585} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:38 Step:3585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3587} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 706.57))(GS (sl 0) (sr 0) (t 371.51) (pm PlayOn))(foul 7)(GYR (n torso) (rt 253.56 -12.42 28.59))(ACC (n torso) (a 0.21 10.31 5.20))(HJ (n hj1) (ax -0.18))(HJ (n hj2) (ax 0.18))(See (P (team Gym) (id 1) (rlowerarm (pol 0.11 -35.93 19.58)) (llowerarm (pol 0.11 35.59 19.70))) (G2R (pol 25.23 31.26 -39.44)) (G1R (pol 25.24 36.57 -36.92)) (F1R (pol 27.25 56.87 -28.20)) (F2R (pol 26.99 6.32 -45.75)) (B (pol 1.26 58.73 -38.54)) (mypos -10.19 -0.36 0.25) (myorien -23.65) (ballpos -9.00 0.00 0.04) (L (pol 14.06 -25.78 -44.21) (pol 11.26 60.25 -26.97)) (L (pol 26.98 6.21 -45.64) (pol 27.23 57.18 -28.19)) (L (pol 27.19 57.05 -28.14) (pol 23.87 60.09 -26.09)) (L (pol 26.98 6.60 -45.64) (pol 10.03 -59.81 -30.36)) (L (pol 23.59 43.19 -36.49) (pol 23.51 26.15 -42.49)) (L (pol 23.63 43.14 -36.38) (pol 25.40 42.57 -36.78)) (L (pol 23.56 26.17 -42.68) (pol 25.31 26.66 -42.25)) (L (pol 12.19 36.38 -39.92) (pol 11.91 42.81 -37.23)) (L (pol 11.92 42.37 -37.42) (pol 11.04 47.24 -34.99)) (L (pol 11.05 47.43 -34.80) (pol 9.84 48.96 -34.32)) (L (pol 9.84 48.80 -34.53) (pol 8.72 45.97 -36.27)) (L (pol 8.72 46.15 -36.25) (pol 8.22 37.49 -40.03)) (L (pol 8.22 37.61 -40.08) (pol 8.61 27.66 -43.23)) (L (pol 8.61 27.91 -43.36) (pol 9.69 23.00 -44.26)) (L (pol 9.71 22.95 -44.61) (pol 10.92 24.14 -44.04)) (L (pol 10.94 24.22 -43.81) (pol 11.85 29.44 -42.19)) (L (pol 11.85 29.39 -42.33) (pol 12.21 36.43 -39.93)))(HJ (n raj1) (ax 36.32))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 47.70))(HJ (n raj4) (ax 90.09))(HJ (n laj1) (ax 36.32))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax -47.70))(HJ (n laj4) (ax -90.11))(HJ (n rlj1) (ax -36.56))(HJ (n rlj2) (ax 20.53))(HJ (n rlj3) (ax 3.04))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax 69.13))(HJ (n rlj6) (ax 47.25))(HJ (n llj1) (ax -36.13))(HJ (n llj2) (ax -21.44))(HJ (n llj3) (ax 2.75))(HJ (n llj4) (ax 1.00))(HJ (n llj5) (ax 69.39))(HJ (n llj6) (ax -47.30)) +{Tue 20:37:38 Step:3588} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:38 Step:3588} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3723} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3725} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3725} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3727} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3729} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3729} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3732} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:41 Step:3733} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3735} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3737} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3739} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3739} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3741} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3741} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3743} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3747} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3749} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3751} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3759} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3761} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3763} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3765} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3767} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 710.17))(GS (sl 0) (sr 0) (t 375.11) (pm PlayOn))(foul 7)(GYR (n torso) (rt 10.31 -150.88 -261.65))(ACC (n torso) (a -14.00 -7.04 4.74))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (G2R (pol 24.99 20.33 17.82)) (G1R (pol 25.00 25.18 17.63)) (F1R (pol 27.04 45.04 13.52)) (F2R (pol 26.69 -0.16 16.32)) (B (pol 1.11 44.07 -4.63)) (mypos -9.96 -0.44 0.39) (myorien -21.55) (ballpos -9.00 0.00 0.04) (L (pol 13.79 -23.53 13.22) (pol 12.64 59.98 9.36)) (L (pol 26.79 -0.18 16.14) (pol 27.05 44.89 13.30)) (L (pol 27.06 44.67 13.34) (pol 17.05 59.95 9.80)) (L (pol 26.73 -0.36 16.30) (pol 9.70 -59.91 4.19)) (L (pol 23.42 30.72 15.19) (pol 23.27 14.96 16.25)) (L (pol 23.39 30.54 15.20) (pol 25.19 29.83 15.39)) (L (pol 23.33 14.95 16.40) (pol 25.10 15.49 16.32)) (L (pol 11.97 23.78 14.81) (pol 11.69 29.64 14.24)) (L (pol 11.72 29.53 14.35) (pol 10.83 34.25 13.61)) (L (pol 10.83 34.29 13.67) (pol 9.64 35.91 13.21)) (L (pol 9.63 36.08 13.26) (pol 8.49 32.74 13.27)) (L (pol 8.50 32.86 13.24) (pol 7.97 24.86 13.73)) (L (pol 7.98 24.66 13.82) (pol 8.37 16.21 14.42)) (L (pol 8.37 16.38 14.47) (pol 9.46 12.46 14.92)) (L (pol 9.45 12.47 14.77) (pol 10.70 13.50 15.02)) (L (pol 10.68 13.41 15.28) (pol 11.60 17.87 15.34)) (L (pol 11.60 17.65 15.26) (pol 11.96 23.49 15.12)))(HJ (n raj1) (ax -65.84))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 89.81))(HJ (n raj4) (ax -1.25))(HJ (n laj1) (ax -65.84))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax -89.77))(HJ (n laj4) (ax 1.23))(HJ (n rlj1) (ax -9.51))(HJ (n rlj2) (ax -42.12))(HJ (n rlj3) (ax 94.64))(HJ (n rlj4) (ax -128.66))(HJ (n rlj5) (ax 49.08))(FRP (n rf) (c -0.04 0.08 -0.02) (f 27.96 -43.39 -50.85))(HJ (n rlj6) (ax -24.64))(HJ (n llj1) (ax -6.50))(HJ (n llj2) (ax 42.11))(HJ (n llj3) (ax 98.55))(HJ (n llj4) (ax -128.86))(HJ (n llj5) (ax 49.09))(HJ (n llj6) (ax 24.64)) +{Tue 20:37:42 Step:3768} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 710.19))(GS (sl 0) (sr 0) (t 375.13) (pm PlayOn))(foul 7)(GYR (n torso) (rt 27.75 -166.46 -135.57))(ACC (n torso) (a 3.80 -12.76 19.00))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -72.85))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 96.81))(HJ (n raj4) (ax 3.61))(HJ (n laj1) (ax -72.85))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax -96.78))(HJ (n laj4) (ax -3.49))(HJ (n rlj1) (ax -2.54))(HJ (n rlj2) (ax -49.11))(HJ (n rlj3) (ax 100.66))(HJ (n rlj4) (ax -135.63))(HJ (n rlj5) (ax 56.04))(FRP (n rf) (c -0.06 0.08 -0.02) (f 2.80 -16.88 -44.17))(HJ (n rlj6) (ax -31.05))(HJ (n llj1) (ax -5.84))(HJ (n llj2) (ax 49.12))(HJ (n llj3) (ax 99.69))(HJ (n llj4) (ax -135.89))(HJ (n llj5) (ax 56.10))(FRP (n lf) (c 0.04 0.04 -0.02) (f -15.84 -7.91 -52.43))(HJ (n llj6) (ax 31.12)) +{Tue 20:37:42 Step:3768} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3771} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3774} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3779} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3780} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:42 Step:3781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3783} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3785} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3787} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3790} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3793} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3796} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3797} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3800} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3801} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3803} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3806} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3807} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3811} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3818} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3821} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3821} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3824} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3825} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3827} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3829} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3829} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3831} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3831} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3834} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3839} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3842} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3843} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3846} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3849} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3849} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3851} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3853} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3853} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3855} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3855} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3859} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3859} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3861} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3864} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3865} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3867} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3873} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3876} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:45 Step:3877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3879} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3879} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3881} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3881} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3883} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3883} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3886} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:45 Step:3887} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3889} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3891} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3893} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3893} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3895} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3897} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3899} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3901} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3909} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3912} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3917} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:3917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3920} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3924} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3925} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3928} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3929} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3931} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:3931} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3934} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3935} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3937} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:3937} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3940} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3945} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3945} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3949} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3949} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3951} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:3951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3954} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3954} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3955} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3958} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3959} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3963} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3963} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3966} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3967} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3970} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3971} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3974} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3975} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3978} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3979} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3981} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:47 Step:3981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3984} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3985} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3988} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3992} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3993} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3996} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:4000} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:4001} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:4003} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:48 Step:4003} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4007} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:4007} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4011} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:4011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4013} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:48 Step:4013} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4015} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:48 Step:4015} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4019} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:4019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4022} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:4022} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4023} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4026} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:4027} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4029} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:48 Step:4029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4032} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:4033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4036} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:4037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4039} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:48 Step:4039} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4042} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:4043} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4046} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:4047} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4049} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:49 Step:4049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4053} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4053} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4056} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4057} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4059} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:49 Step:4059} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4063} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4063} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4065} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:49 Step:4065} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4069} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4069} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4072} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4073} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4077} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4077} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4082} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4083} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4086} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4087} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4090} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4091} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4094} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4095} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4097} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4097} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4101} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4101} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4105} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4105} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4108} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4109} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4111} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4111} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4114} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4119} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4119} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4122} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4123} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4125} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4125} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4127} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4127} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4129} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4129} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4132} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4135} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4135} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4137} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4137} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4140} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4141} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4143} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4143} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4145} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4145} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4148} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:51 Step:4149} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4151} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4151} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4154} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:51 Step:4155} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4157} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4157} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4159} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4161} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4161} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4163} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4163} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4166} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:51 Step:4167} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4169} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4169} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4171} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4171} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4174} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:51 Step:4175} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4177} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4177} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4180} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:51 Step:4181} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4184} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:51 Step:4185} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4187} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4187} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4190} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:52 Step:4191} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4193} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4193} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4196} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:52 Step:4197} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4200} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:52 Step:4201} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4203} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4203} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4205} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4205} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4207} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4207} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4209} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4209} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4212} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:52 Step:4213} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4215} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4215} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4217} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4220} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:52 Step:4221} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4223} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4225} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4225} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4227} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4229} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4229} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4231} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4231} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4233} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4235} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4235} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4237} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4237} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4240} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:53 Step:4241} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4243} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4243} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4245} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4245} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4248} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:53 Step:4251} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4253} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4256} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:53 Step:4257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4259} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4261} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4264} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:53 Step:4265} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4267} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4267} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4269} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4269} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4271} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4271} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4274} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:53 Step:4275} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4278} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:53 Step:4279} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4281} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:54 Step:4281} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4285} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4285} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4289} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4289} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4292} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4293} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4295} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:54 Step:4295} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4298} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4299} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4301} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:54 Step:4301} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4304} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4305} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4308} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4309} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4312} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4313} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4316} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4317} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4319} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:54 Step:4319} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4324} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4325} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4327} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:54 Step:4327} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4331} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4335} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4335} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4338} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4342} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4343} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4346} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4349} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4351} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4351} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4354} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4355} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4358} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4359} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4361} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4361} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4364} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4365} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4368} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4369} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4373} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4373} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4375} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4375} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4377} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4377} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4380} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4383} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:56 Step:4385} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4385} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4387} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4387} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4389} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4389} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4392} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4397} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4399} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4399} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4401} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4401} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4404} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:58 Step:4479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4481} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4484} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:58 Step:4485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4488} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:58 Step:4489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4491} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4497} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4497} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4499} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4499} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4501} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4501} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4504} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:58 Step:4505} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4507} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 724.98))(GS (sl 0) (sr 0) (t 389.90) (pm PlayOn))(foul 7)(GYR (n torso) (rt 108.48 213.26 121.71))(ACC (n torso) (a -0.99 0.30 8.79))(HJ (n hj1) (ax -105.31))(HJ (n hj2) (ax -48.93))(See (P (team Gym) (id 1) (rlowerarm (pol 0.27 16.89 -9.16)) (rfoot (pol 0.47 -3.10 -34.44)) (lfoot (pol 0.46 9.47 -37.10))) (mypos -9.70 -0.02 0.42) (myorien -179.71) (ballpos -9.00 0.00 0.04))(HJ (n raj1) (ax -93.42))(HJ (n raj2) (ax -11.03))(HJ (n raj3) (ax 124.72))(HJ (n raj4) (ax 70.00))(HJ (n laj1) (ax -46.99))(HJ (n laj2) (ax 7.76))(HJ (n laj3) (ax -122.24))(HJ (n laj4) (ax -69.94))(HJ (n rlj1) (ax -4.83))(HJ (n rlj2) (ax 2.68))(HJ (n rlj3) (ax 28.85))(HJ (n rlj4) (ax -111.83))(HJ (n rlj5) (ax 53.86))(HJ (n rlj6) (ax -1.61))(HJ (n llj1) (ax -11.54))(HJ (n llj2) (ax -29.78))(HJ (n llj3) (ax 38.18))(HJ (n llj4) (ax -93.45))(HJ (n llj5) (ax 52.86))(HJ (n llj6) (ax -2.24)) +{Tue 20:37:58 Step:4507} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4511} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4513} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4516} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4520} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4523} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4526} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4527} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4530} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4531} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4534} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4537} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4540} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4543} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4543} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4546} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4549} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4552} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4555} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4557} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4559} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4562} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4575} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4578} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4582} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4583} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4586} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4591} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4593} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4595} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4597} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4599} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4601} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4601} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4603} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4605} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4605} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4608} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4611} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4615} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4617} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4621} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4624} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4627} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4627} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4630} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4631} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4633} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4633} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4636} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4637} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4641} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4643} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4643} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4647} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4650} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4654} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4657} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4660} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4663} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4666} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4666} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4669} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4672} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4675} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4677} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4680} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4683} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4686} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4689} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4689} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4692} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4695} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4698} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4699} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4701} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4704} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4704} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4708} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4711} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4711} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4716} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4720} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4721} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4724} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4725} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4727} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4730} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4731} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4734} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4737} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4741} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4741} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4746} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4750} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4754} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4757} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4761} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4764} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4768} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4771} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4776} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4780} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4784} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4787} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4790} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4794} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4795} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4797} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4797} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4799} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4799} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4802} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4805} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4808} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4808} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:05 Step:4809} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4812} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4815} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4818} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4822} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4823} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4826} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4831} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4831} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4834} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4839} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4843} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4843} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4846} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4851} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4855} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4855} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4859} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4859} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4864} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4865} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4869} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4869} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4874} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4875} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4878} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4879} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4883} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4883} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4886} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4887} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4890} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4894} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4898} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4902} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4905} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4909} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4914} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4917} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4922} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4926} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4927} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4929} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4929} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4932} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4938} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4939} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4942} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4943} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4946} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4950} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4955} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4955} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4959} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4959} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4962} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4963} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4965} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:08 Step:4965} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4969} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4969} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4973} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4973} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4976} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4977} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4980} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4984} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4985} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4988} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4991} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:08 Step:4991} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4995} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4995} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4998} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:4999} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:5003} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:5003} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:5005} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:5005} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:5009} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:5009} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:5011} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:5011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:5014} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:5015} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:5018} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:5019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:5021} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:5021} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:5024} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:5027} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:5030} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:5031} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:5033} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:5033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:5036} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:5037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:5040} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:5041} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:5044} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:5045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:5048} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:5049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:5052} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:5053} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:5056} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:5057} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:5061} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:5061} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:5066} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:5067} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:5071} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:5071} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:5075} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:5075} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:5078} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:5078} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:5079} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:5083} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:5083} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:5088} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:5089} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:5092} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5093} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5095} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:5095} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5099} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5099} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5102} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5103} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5106} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5107} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5110} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5111} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5114} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5115} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5117} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:5117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5119} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:5119} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5124} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5125} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5128} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5129} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5132} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5137} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5137} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5139} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5139} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5142} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:12 Step:5143} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5145} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5145} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5148} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:12 Step:5149} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5151} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5151} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5154} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:12 Step:5155} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5157} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5157} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5159} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5159} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5161} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5161} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5163} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5163} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5166} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:13 Step:5209} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5211} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:5211} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5214} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:13 Step:5215} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5218} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:13 Step:5219} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5221} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:14 Step:5237} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5241} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5241} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5245} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5245} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5249} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5249} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5253} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5257} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5260} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5260} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5265} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5265} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5269} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5269} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5275} Server_Comm.py: The agent lost 5 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5275} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5280} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5281} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5284} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5285} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5289} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5289} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5292} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5293} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5296} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5297} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5299} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:15 Step:5299} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5302} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5303} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5305} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:15 Step:5305} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5310} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5311} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5314} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 741.14))(GS (sl 0) (sr 0) (t 406.04) (pm PlayOn))(foul 7)(GYR (n torso) (rt -72.06 43.41 396.79))(ACC (n torso) (a 3.27 6.65 -5.88))(HJ (n hj1) (ax -98.29))(HJ (n hj2) (ax -7.96))(HJ (n raj1) (ax -116.38))(HJ (n raj2) (ax -34.46))(HJ (n raj3) (ax 117.08))(HJ (n raj4) (ax 48.80))(HJ (n laj1) (ax -116.37))(HJ (n laj2) (ax 1.39))(HJ (n laj3) (ax -97.76))(HJ (n laj4) (ax -48.48))(HJ (n rlj1) (ax 0.34))(HJ (n rlj2) (ax 23.18))(HJ (n rlj3) (ax 41.65))(HJ (n rlj4) (ax -105.27))(HJ (n rlj5) (ax 39.62))(FRP (n rf) (c 0.04 0.08 -0.01) (f -54.24 -3.29 30.59))(HJ (n rlj6) (ax 9.81))(HJ (n llj1) (ax -34.86))(HJ (n llj2) (ax 6.33))(HJ (n llj3) (ax -1.20))(HJ (n llj4) (ax -94.76))(HJ (n llj5) (ax 71.25))(HJ (n llj6) (ax 22.82)) +{Tue 20:38:15 Step:5315} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5315} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5317} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:15 Step:5317} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5320} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5321} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5323} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:15 Step:5323} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5325} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:15 Step:5325} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5329} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5333} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5335} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:15 Step:5335} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5338} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5341} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5343} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5343} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5347} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5347} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5349} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5349} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5352} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5353} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5355} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5355} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5357} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5357} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5359} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5362} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5363} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5366} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5367} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5370} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5374} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5375} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5378} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5379} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5382} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5383} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5385} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5385} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5388} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5388} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5389} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5391} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5391} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5394} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5395} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5397} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5397} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5399} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5399} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5402} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5403} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5405} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5408} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5415} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5417} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5417} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5420} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5421} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5423} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5426} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5427} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5429} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5429} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5432} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5433} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5435} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5435} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5438} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5442} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5443} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5445} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5445} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5447} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5447} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5449} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5449} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5451} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5453} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5455} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5457} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5457} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5460} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5463} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:18 Step:5465} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5465} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5467} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5473} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5475} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5478} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:19 Step:5479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5481} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5482} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5483} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5487} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5488} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5491} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5493} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5495} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5498} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:19 Step:5499} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5501} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5503} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5505} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5505} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5508} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:19 Step:5509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5510} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:19 Step:5511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5513} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5515} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5517} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5519} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5521} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5523} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5526} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:20 Step:5527} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5535} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5539} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5542} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5543} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5545} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5547} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5551} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5577} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5579} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5581} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5583} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5583} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5586} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5589} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5591} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5599} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5601} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5601} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5603} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5603} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:22 Step:5611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5613} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5616} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5616} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:22 Step:5617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5623} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5626} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5639} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5641} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5643} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5643} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5651} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5653} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5655} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5687} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:23 Step:5689} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5689} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5692} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5696} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5699} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:24 Step:5715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5719} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5722} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5723} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5726} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5729} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:24 Step:5729} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5732} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5732} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:24 Step:5733} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5735} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:24 Step:5735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5739} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5739} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5743} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5745} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5747} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 749.81))(GS (sl 0) (sr 0) (t 414.69) (pm PlayOn))(foul 7)(GYR (n torso) (rt -222.12 -118.66 -678.76))(ACC (n torso) (a 3.98 6.61 -5.31))(HJ (n hj1) (ax 126.21))(HJ (n hj2) (ax -42.79))(See (P (team Gym) (id 1) (rfoot (pol 0.53 8.75 -28.46)) (lfoot (pol 0.52 18.50 -44.19))) (G2R (pol 25.39 -23.09 21.61)) (G1R (pol 25.41 -19.29 25.08)) (F1R (pol 27.47 -0.89 35.59)) (F2R (pol 27.15 -35.33 6.10)) (B (pol 1.56 4.90 18.03)) (mypos -10.41 -0.43 0.54) (myorien 0.68) (ballpos -9.00 0.00 0.04) (L (pol 14.15 -48.76 -11.02) (pol 14.74 26.55 45.07)) (L (pol 27.17 -35.18 6.30) (pol 27.47 -0.85 35.60)) (L (pol 27.47 -0.74 35.66) (pol 11.67 52.62 46.44)) (L (pol 27.16 -35.14 6.14) (pol 11.14 -60.28 -23.62)) (L (pol 23.86 -13.94 26.95) (pol 23.74 -25.00 16.75)) (L (pol 23.86 -13.92 26.94) (pol 25.65 -14.20 26.57)) (L (pol 23.74 -25.40 16.72) (pol 25.55 -24.81 17.16)) (L (pol 12.42 -17.90 21.64) (pol 12.14 -13.30 25.30)) (L (pol 12.15 -13.70 25.51) (pol 11.29 -9.72 28.17)) (L (pol 11.28 -9.49 28.03) (pol 10.08 -8.26 28.87)) (L (pol 10.10 -7.95 28.97) (pol 8.95 -10.70 26.48)) (L (pol 8.96 -10.34 26.79) (pol 8.44 -16.28 21.52)) (L (pol 8.44 -16.29 21.35) (pol 8.83 -22.40 16.13)) (L (pol 8.85 -22.38 16.53) (pol 9.91 -25.10 13.84)) (L (pol 9.91 -25.41 13.73) (pol 11.13 -24.90 14.51)) (L (pol 11.12 -25.05 14.69) (pol 12.06 -22.32 17.70)) (L (pol 12.06 -22.00 17.83) (pol 12.42 -17.89 21.80)))(HJ (n raj1) (ax 28.65))(HJ (n raj2) (ax -2.77))(HJ (n raj3) (ax 120.15))(HJ (n raj4) (ax -3.71))(HJ (n laj1) (ax 28.66))(HJ (n laj2) (ax -1.06))(HJ (n laj3) (ax -120.66))(HJ (n laj4) (ax 4.33))(HJ (n rlj1) (ax 5.61))(HJ (n rlj2) (ax 31.20))(HJ (n rlj3) (ax -20.50))(HJ (n rlj4) (ax 1.03))(HJ (n rlj5) (ax -37.14))(HJ (n rlj6) (ax 47.62))(HJ (n llj1) (ax 6.39))(HJ (n llj2) (ax -25.67))(HJ (n llj3) (ax -22.49))(HJ (n llj4) (ax -3.75))(HJ (n llj5) (ax 19.94))(FRP (n lf) (c -0.04 -0.08 -0.01) (f 73.04 18.23 76.72))(HJ (n llj6) (ax -44.07)) +{Tue 20:38:25 Step:5749} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5753} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5753} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5756} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5759} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5762} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5766} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5770} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5773} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5773} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5776} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5781} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5784} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5789} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5792} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5792} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5797} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5797} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5802} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5805} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5809} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5809} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5812} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5812} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:26 Step:5815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5817} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5857} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5859} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5859} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5862} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5862} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5866} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5866} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5870} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5873} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5877} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5881} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5881} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5885} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5885} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5897} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5902} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5915} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5918} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5953} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5955} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5957} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5957} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5959} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5959} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5961} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5961} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5964} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5969} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5972} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5973} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5976} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5986} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5986} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:30 Step:5988} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:5988} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:30 Step:5989} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 754.65))(GS (sl 0) (sr 0) (t 419.53) (pm PlayOn))(foul 7)(GYR (n torso) (rt 324.85 165.04 16.03))(ACC (n torso) (a -1.71 0.74 -3.72))(HJ (n hj1) (ax 62.97))(HJ (n hj2) (ax -49.06))(See (P (team Gym) (id 1) (rlowerarm (pol 0.25 -50.97 -58.90)) (llowerarm (pol 0.25 3.44 -9.22)) (rfoot (pol 0.45 8.39 -48.34)) (lfoot (pol 0.50 -2.22 -47.94))) (G2R (pol 25.45 3.17 13.35)) (G1R (pol 25.46 6.41 16.99)) (F1R (pol 27.42 21.83 29.93)) (F2R (pol 27.24 -7.39 -2.55)) (B (pol 1.48 23.03 16.86)) (mypos -10.41 -0.35 0.32) (myorien -14.14) (ballpos -9.00 0.00 0.04) (L (pol 14.20 -21.27 -20.33) (pol 14.69 44.92 43.44)) (L (pol 27.15 -7.61 -2.70) (pol 27.45 21.87 30.02)) (L (pol 27.45 21.60 29.97) (pol 13.24 53.02 46.18)) (L (pol 27.21 -7.30 -2.56) (pol 9.80 -53.70 -45.66)) (L (pol 23.87 11.24 19.75) (pol 23.77 1.59 8.52)) (L (pol 23.85 11.15 19.80) (pol 25.60 10.63 19.34)) (L (pol 23.76 1.51 8.54) (pol 25.51 1.75 9.08)) (L (pol 12.42 7.26 14.32) (pol 12.14 11.04 18.56)) (L (pol 12.14 11.28 18.75) (pol 11.26 14.24 21.65)) (L (pol 11.27 14.20 21.63) (pol 10.06 15.69 22.36)) (L (pol 10.05 15.65 22.57) (pol 8.93 13.35 20.13)) (L (pol 8.94 13.36 20.23) (pol 8.43 8.09 14.48)) (L (pol 8.43 8.26 14.27) (pol 8.85 3.24 8.38)) (L (pol 8.84 3.03 8.56) (pol 9.92 0.92 5.86)) (L (pol 9.93 0.87 5.83) (pol 11.14 1.26 6.82)) (L (pol 11.15 1.08 6.57) (pol 12.06 3.88 9.95)) (L (pol 12.09 3.56 9.99) (pol 12.41 7.31 14.37)))(HJ (n raj1) (ax -99.98))(HJ (n raj2) (ax -7.30))(HJ (n raj3) (ax 108.93))(HJ (n raj4) (ax 96.91))(HJ (n laj1) (ax -99.98))(HJ (n laj2) (ax 9.46))(HJ (n laj3) (ax -108.97))(HJ (n laj4) (ax -96.90))(HJ (n rlj1) (ax -4.42))(HJ (n rlj2) (ax 16.74))(HJ (n rlj3) (ax 15.14))(HJ (n rlj4) (ax -117.57))(HJ (n rlj5) (ax 63.07))(HJ (n rlj6) (ax -18.00))(HJ (n llj1) (ax -10.17))(HJ (n llj2) (ax -23.56))(HJ (n llj3) (ax 14.82))(HJ (n llj4) (ax -82.64))(HJ (n llj5) (ax 44.08))(FRP (n lf) (c -0.04 -0.08 -0.01) (f 2.38 10.31 16.08))(HJ (n llj6) (ax 11.12)) +{Tue 20:38:30 Step:5989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5991} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:5991} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5994} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5994} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:30 Step:5995} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5998} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5998} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:30 Step:5999} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:6001} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:6001} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:6003} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:6003} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:6005} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:6005} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:6009} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:6009} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:6012} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:6012} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:30 Step:6013} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:6016} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:6016} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:6017} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:6020} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:6021} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:6023} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:31 Step:6023} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:6025} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:31 Step:6025} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:6028} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:6029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:6030} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:6031} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:6033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:6035} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:31 Step:6035} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:6038} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:6039} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:6041} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:31 Step:6041} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:6044} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:6045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:6048} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:6049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:6052} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:6053} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:6055} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:31 Step:6055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:6057} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:31 Step:6057} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:6060} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:6061} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:6063} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:32 Step:6063} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:6066} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:6067} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:6071} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:6071} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:6075} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:6075} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:6078} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:6078} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:6079} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:6082} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:6083} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:6087} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:6087} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:6091} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:6091} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:6096} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:6097} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:6101} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:6101} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:6104} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:6105} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:6108} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:6108} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:32 Step:6109} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:6113} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:6113} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:6116} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:6117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:6121} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:6121} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:6125} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:6125} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:6129} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:6129} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:6133} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:6133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:6137} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:6137} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:6140} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? diff --git a/logs/2025-11-04_20.36.22__JPDNGY/Gym_1.log b/logs/2025-11-04_20.36.22__JPDNGY/Gym_1.log new file mode 100644 index 0000000..213459b --- /dev/null +++ b/logs/2025-11-04_20.36.22__JPDNGY/Gym_1.log @@ -0,0 +1,2189 @@ +{Tue 20:36:22 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 93, +Msg: (time (now 633.48))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -28.09 -20.37)) (llowerarm (pol 0.22 30.55 -20.17))) (G2R (pol 29.91 -12.76 0.37)) (G1R (pol 29.54 -8.52 0.65)) (F1R (pol 29.53 8.54 -1.35)) (F2R (pol 33.16 -27.83 -0.94)) (B (pol 15.27 -21.53 -1.77)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.09 -47.63 -1.66) (pol 14.84 16.65 -2.07)) (L (pol 33.09 -28.22 -0.86) (pol 29.53 8.59 -1.22)) (L (pol 29.54 8.60 -1.19) (pol 5.11 60.25 -6.37)) (L (pol 33.11 -27.98 -0.95) (pol 18.03 -60.28 -1.78)) (L (pol 27.53 -5.44 -1.28) (pol 28.72 -17.71 -1.02)) (L (pol 27.52 -5.45 -1.24) (pol 29.30 -5.24 -1.00)) (L (pol 28.72 -17.45 -1.02) (pol 30.43 -16.18 -1.03)) (L (pol 17.15 -19.39 -1.78) (pol 16.44 -15.39 -1.96)) (L (pol 16.43 -15.52 -2.06) (pol 15.31 -14.10 -2.09)) (L (pol 15.26 -13.91 -2.18) (pol 14.08 -15.33 -2.14)) (L (pol 14.07 -15.05 -2.43) (pol 13.32 -19.45 -2.45)) (L (pol 13.37 -19.45 -2.59) (pol 13.43 -24.73 -2.34)) (L (pol 13.43 -24.88 -2.46) (pol 14.31 -28.43 -2.27)) (L (pol 14.32 -28.41 -2.38) (pol 15.52 -28.78 -1.99)) (L (pol 15.50 -28.92 -2.01) (pol 16.61 -27.11 -1.82)) (L (pol 16.61 -26.91 -1.70) (pol 17.22 -23.33 -1.73)) (L (pol 17.21 -23.37 -2.17) (pol 17.14 -19.27 -1.86)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:22 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 101, +Msg: (time (now 633.48))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -28.09 -20.37)) (llowerarm (pol 0.22 30.55 -20.17))) (G2R (pol 29.91 -12.76 0.37)) (G1R (pol 29.54 -8.52 0.65)) (F1R (pol 29.53 8.54 -1.35)) (F2R (pol 33.16 -27.83 -0.94)) (B (pol 15.27 -21.53 -1.77)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.09 -47.63 -1.66) (pol 14.84 16.65 -2.07)) (L (pol 33.09 -28.22 -0.86) (pol 29.53 8.59 -1.22)) (L (pol 29.54 8.60 -1.19) (pol 5.11 60.25 -6.37)) (L (pol 33.11 -27.98 -0.95) (pol 18.03 -60.28 -1.78)) (L (pol 27.53 -5.44 -1.28) (pol 28.72 -17.71 -1.02)) (L (pol 27.52 -5.45 -1.24) (pol 29.30 -5.24 -1.00)) (L (pol 28.72 -17.45 -1.02) (pol 30.43 -16.18 -1.03)) (L (pol 17.15 -19.39 -1.78) (pol 16.44 -15.39 -1.96)) (L (pol 16.43 -15.52 -2.06) (pol 15.31 -14.10 -2.09)) (L (pol 15.26 -13.91 -2.18) (pol 14.08 -15.33 -2.14)) (L (pol 14.07 -15.05 -2.43) (pol 13.32 -19.45 -2.45)) (L (pol 13.37 -19.45 -2.59) (pol 13.43 -24.73 -2.34)) (L (pol 13.43 -24.88 -2.46) (pol 14.31 -28.43 -2.27)) (L (pol 14.32 -28.41 -2.38) (pol 15.52 -28.78 -1.99)) (L (pol 15.50 -28.92 -2.01) (pol 16.61 -27.11 -1.82)) (L (pol 16.61 -26.91 -1.70) (pol 17.22 -23.33 -1.73)) (L (pol 17.21 -23.37 -2.17) (pol 17.14 -19.27 -1.86)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:22 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 109, +Msg: (time (now 633.48))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -28.09 -20.37)) (llowerarm (pol 0.22 30.55 -20.17))) (G2R (pol 29.91 -12.76 0.37)) (G1R (pol 29.54 -8.52 0.65)) (F1R (pol 29.53 8.54 -1.35)) (F2R (pol 33.16 -27.83 -0.94)) (B (pol 15.27 -21.53 -1.77)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.09 -47.63 -1.66) (pol 14.84 16.65 -2.07)) (L (pol 33.09 -28.22 -0.86) (pol 29.53 8.59 -1.22)) (L (pol 29.54 8.60 -1.19) (pol 5.11 60.25 -6.37)) (L (pol 33.11 -27.98 -0.95) (pol 18.03 -60.28 -1.78)) (L (pol 27.53 -5.44 -1.28) (pol 28.72 -17.71 -1.02)) (L (pol 27.52 -5.45 -1.24) (pol 29.30 -5.24 -1.00)) (L (pol 28.72 -17.45 -1.02) (pol 30.43 -16.18 -1.03)) (L (pol 17.15 -19.39 -1.78) (pol 16.44 -15.39 -1.96)) (L (pol 16.43 -15.52 -2.06) (pol 15.31 -14.10 -2.09)) (L (pol 15.26 -13.91 -2.18) (pol 14.08 -15.33 -2.14)) (L (pol 14.07 -15.05 -2.43) (pol 13.32 -19.45 -2.45)) (L (pol 13.37 -19.45 -2.59) (pol 13.43 -24.73 -2.34)) (L (pol 13.43 -24.88 -2.46) (pol 14.31 -28.43 -2.27)) (L (pol 14.32 -28.41 -2.38) (pol 15.52 -28.78 -1.99)) (L (pol 15.50 -28.92 -2.01) (pol 16.61 -27.11 -1.82)) (L (pol 16.61 -26.91 -1.70) (pol 17.22 -23.33 -1.73)) (L (pol 17.21 -23.37 -2.17) (pol 17.14 -19.27 -1.86)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:22 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 117, +Msg: (time (now 633.48))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -28.09 -20.37)) (llowerarm (pol 0.22 30.55 -20.17))) (G2R (pol 29.91 -12.76 0.37)) (G1R (pol 29.54 -8.52 0.65)) (F1R (pol 29.53 8.54 -1.35)) (F2R (pol 33.16 -27.83 -0.94)) (B (pol 15.27 -21.53 -1.77)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.09 -47.63 -1.66) (pol 14.84 16.65 -2.07)) (L (pol 33.09 -28.22 -0.86) (pol 29.53 8.59 -1.22)) (L (pol 29.54 8.60 -1.19) (pol 5.11 60.25 -6.37)) (L (pol 33.11 -27.98 -0.95) (pol 18.03 -60.28 -1.78)) (L (pol 27.53 -5.44 -1.28) (pol 28.72 -17.71 -1.02)) (L (pol 27.52 -5.45 -1.24) (pol 29.30 -5.24 -1.00)) (L (pol 28.72 -17.45 -1.02) (pol 30.43 -16.18 -1.03)) (L (pol 17.15 -19.39 -1.78) (pol 16.44 -15.39 -1.96)) (L (pol 16.43 -15.52 -2.06) (pol 15.31 -14.10 -2.09)) (L (pol 15.26 -13.91 -2.18) (pol 14.08 -15.33 -2.14)) (L (pol 14.07 -15.05 -2.43) (pol 13.32 -19.45 -2.45)) (L (pol 13.37 -19.45 -2.59) (pol 13.43 -24.73 -2.34)) (L (pol 13.43 -24.88 -2.46) (pol 14.31 -28.43 -2.27)) (L (pol 14.32 -28.41 -2.38) (pol 15.52 -28.78 -1.99)) (L (pol 15.50 -28.92 -2.01) (pol 16.61 -27.11 -1.82)) (L (pol 16.61 -26.91 -1.70) (pol 17.22 -23.33 -1.73)) (L (pol 17.21 -23.37 -2.17) (pol 17.14 -19.27 -1.86)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:22 Step:3} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:22 Step:5} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:22 Step:5} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:22 Step:7} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:22 Step:7} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:22 Step:9} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:23 Step:9} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:23 Step:11} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:23 Step:11} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:23 Step:14} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:23 Step:15} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:23 Step:17} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:23 Step:17} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:23 Step:19} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:23 Step:19} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:23 Step:21} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:23 Step:21} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:23 Step:24} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:32 Step:25} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:32 Step:475} Server_Comm.py: The agent lost 449 consecutive packets! Is syncmode disabled? +{Tue 20:36:32 Step:475} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:477} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:32 Step:477} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:481} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:32 Step:481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:484} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:32 Step:485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:487} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:32 Step:487} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:491} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:32 Step:491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:494} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:32 Step:495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:498} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:499} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:502} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:503} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:505} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:505} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:508} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:512} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:516} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:519} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:521} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:523} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:526} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:527} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:529} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:531} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:531} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:533} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:537} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:541} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:543} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:543} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:545} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:547} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:549} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:553} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:556} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:559} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:561} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:563} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:565} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:570} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:573} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:575} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:577} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:580} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:584} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:587} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:589} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:592} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:595} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:598} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:601} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:601} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:604} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:605} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:608} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:613} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:617} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:619} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:622} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:622} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:628} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:629} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:631} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:36 Step:631} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:632} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:36 Step:633} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:635} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:36 Step:635} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:639} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:642} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:643} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:647} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:651} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:655} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:659} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:662} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:666} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:669} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:36 Step:669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:670} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:36 Step:671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:673} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:705} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:706} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:713} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:715} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:718} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:721} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:721} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:723} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:723} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:725} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:725} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:728} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:38 Step:729} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:732} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:38 Step:735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:737} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:739} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:739} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:742} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:38 Step:743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:745} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:747} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:750} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:38 Step:751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:753} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:757} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:38 Step:761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:763} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:768} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:39 Step:771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:773} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:773} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:775} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:779} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:39 Step:795} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:797} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:40 Step:845} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:847} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:40 Step:847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:850} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:40 Step:851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:852} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 650.47))(GS (sl 0) (sr 0) (t 316.46) (pm PlayOn))(foul 7)(GYR (n torso) (rt -54.43 197.31 8.54))(ACC (n torso) (a 3.77 -0.86 -3.00))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -77.07))(HJ (n raj2) (ax -7.54))(HJ (n raj3) (ax 42.74))(HJ (n raj4) (ax 86.69))(HJ (n laj1) (ax -77.08))(HJ (n laj2) (ax 2.08))(HJ (n laj3) (ax -42.71))(HJ (n laj4) (ax -86.64))(HJ (n rlj1) (ax -24.79))(HJ (n rlj2) (ax -32.47))(HJ (n rlj3) (ax 99.96))(HJ (n rlj4) (ax -108.76))(HJ (n rlj5) (ax 50.32))(FRP (n rf) (c 0.04 -0.08 -0.01) (f -6.67 3.82 50.68))(HJ (n rlj6) (ax 44.99))(HJ (n llj1) (ax -32.63))(HJ (n llj2) (ax 32.47))(HJ (n llj3) (ax 70.32))(HJ (n llj4) (ax -108.77))(HJ (n llj5) (ax 50.31))(FRP (n lf) (c -0.04 0.08 -0.01) (f -12.09 -1.02 45.56))(HJ (n llj6) (ax -45.00)) +{Tue 20:36:40 Step:853} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:40 Step:853} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:856} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:40 Step:857} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:859} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:40 Step:859} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:861} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:40 Step:861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:863} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:866} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:41 Step:867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:869} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:869} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:871} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:879} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:879} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:881} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:881} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:885} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:41 Step:885} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:888} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:41 Step:889} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:892} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:41 Step:897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:901} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:907} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:911} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:914} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:917} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:923} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:926} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:943} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:945} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:945} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:947} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:949} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:949} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:951} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:953} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1000} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1001} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1005} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1005} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1007} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1007} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1008} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 653.60))(GS (sl 0) (sr 0) (t 319.58) (pm PlayOn))(foul 7)(GYR (n torso) (rt -6.88 17.15 8.56))(ACC (n torso) (a 3.91 -3.66 8.33))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -97.56))(HJ (n raj2) (ax -26.49))(HJ (n raj3) (ax 48.87))(HJ (n raj4) (ax 34.41))(HJ (n laj1) (ax -86.64))(HJ (n laj2) (ax -1.06))(HJ (n laj3) (ax -48.87))(HJ (n laj4) (ax -35.54))(HJ (n rlj1) (ax -30.41))(HJ (n rlj2) (ax -30.89))(HJ (n rlj3) (ax 100.01))(HJ (n rlj4) (ax -128.23))(HJ (n rlj5) (ax 51.24))(FRP (n rf) (c 0.02 0.06 -0.01) (f 47.40 -8.54 45.84))(HJ (n rlj6) (ax 45.00))(HJ (n llj1) (ax -38.64))(HJ (n llj2) (ax 25.27))(HJ (n llj3) (ax 99.99))(HJ (n llj4) (ax -128.34))(HJ (n llj5) (ax 44.35))(FRP (n lf) (c -0.04 0.08 -0.01) (f -39.77 -2.34 43.21))(HJ (n llj6) (ax -45.00)) +{Tue 20:36:44 Step:1010} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1010} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1013} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1013} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1017} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1017} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1022} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1023} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1026} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1027} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1030} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1035} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1035} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1037} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1039} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1039} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1045} Server_Comm.py: The agent lost 5 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1047} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1119} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1121} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1123} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1125} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1129} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1131} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1131} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1133} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1136} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:46 Step:1136} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:46 Step:1137} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1140} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:46 Step:1140} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:47 Step:1141} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1143} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1143} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1145} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1145} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1147} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1147} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1149} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1149} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1153} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1153} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1155} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1155} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1158} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1158} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1159} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1161} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1167} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1171} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1173} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1227} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1229} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1229} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1232} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:49 Step:1243} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1245} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1245} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1248} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:49 Step:1249} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1251} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1259} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1262} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:49 Step:1262} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:49 Step:1263} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1265} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1265} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1267} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1269} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1325} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1329} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:51 Step:1329} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1334} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:36:51 Step:1337} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1339} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:51 Step:1339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1342} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:51 Step:1343} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1346} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:51 Step:1346} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:51 Step:1351} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1353} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:51 Step:1353} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1356} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:51 Step:1357} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1358} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:51 Step:1359} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:51 Step:1365} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:51 Step:1366} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1367} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1369} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:51 Step:1369} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1371} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:51 Step:1371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1373} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:51 Step:1373} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1375} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1375} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1378} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:52 Step:1379} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1381} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1381} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1383} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1383} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:52 Step:1385} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:52 Step:1387} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1387} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1389} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1389} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1391} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1391} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1392} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1393} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1396} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:52 Step:1405} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1407} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1407} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1410} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:52 Step:1411} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1413} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1413} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1415} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1415} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1417} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1419} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1419} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1422} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:52 Step:1423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1425} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1493} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1495} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1498} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:54 Step:1507} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1509} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1511} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1514} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:54 Step:1515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1517} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1517} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:55 Step:1529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1531} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1531} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1533} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1536} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1541} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1547} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1549} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1552} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1555} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1557} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1561} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:56 Step:1607} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1609} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:56 Step:1609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1612} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:56 Step:1613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1615} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:56 Step:1615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1618} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:57 Step:1619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1622} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:57 Step:1622} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:57 Step:1623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1625} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1628} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:57 Step:1628} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:57 Step:1637} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1639} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1639} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1641} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1644} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:58 Step:1697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1700} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:58 Step:1701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1705} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:58 Step:1709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1712} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:58 Step:1713} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1717} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:59 Step:1719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1723} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:59 Step:1723} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1726} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:59 Step:1731} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1734} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:59 Step:1735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1738} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:59 Step:1739} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1741} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1741} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1744} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:00 Step:1793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1795} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1795} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1798} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:00 Step:1801} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1803} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1805} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1808} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:00 Step:1809} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1811} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1815} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:00 Step:1815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1817} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:01 Step:1817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1820} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:01 Step:1821} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:01 Step:1822} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:01 Step:1825} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1827} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:01 Step:1827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1830} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:01 Step:1843} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1845} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:01 Step:1845} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:01 Step:1847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1852} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:01 Step:1853} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1855} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:02 Step:1903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1907} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1911} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1911} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:03 Step:1913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1916} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1919} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:03 Step:1919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1922} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1925} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:03 Step:1925} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1927} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:03 Step:1927} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:03 Step:1941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1943} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:03 Step:1943} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1946} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1961} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1963} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:1963} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1966} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:04 Step:1967} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1970} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:04 Step:1971} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1973} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:1973} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1975} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:1975} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1977} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:1977} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1985} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1987} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:1987} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1990} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:04 Step:1993} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1995} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:1995} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1998} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:04 Step:1999} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:2001} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2001} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2003} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2003} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2006} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:2007} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2009} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2009} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2015} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2017} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2017} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2019} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2022} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:2025} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2027} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2027} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2029} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2031} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2031} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2034} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:2035} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2037} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2041} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:2041} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2044} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:2045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2048} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:2049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2052} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:2055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2057} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2057} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2060} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:2069} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2071} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2071} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2073} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2073} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2075} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2075} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2078} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:2079} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2082} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:2083} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2085} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2089} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2091} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2091} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2094} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:07 Step:2099} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2102} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:07 Step:2103} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2106} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:07 Step:2107} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2110} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:07 Step:2111} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2113} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2113} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2116} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:07 Step:2125} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2127} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2127} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2130} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:07 Step:2130} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2131} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2135} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2139} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2141} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:08 Step:2141} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2144} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2149} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2153} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2153} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2157} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2157} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2161} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2161} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2165} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2165} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2168} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2169} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2173} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2173} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2177} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2177} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2180} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:09 Step:2181} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2183} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2183} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2187} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:09 Step:2187} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2189} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2189} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2192} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:09 Step:2193} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2195} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2195} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2198} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:09 Step:2199} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2201} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2201} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2203} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2203} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2207} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:09 Step:2207} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2209} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2209} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2213} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:09 Step:2213} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2215} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2215} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2218} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:09 Step:2219} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2221} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2221} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2225} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2225} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2229} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2229} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2231} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2295} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2297} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2297} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2299} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2299} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2301} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2301} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2303} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2303} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2305} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2305} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2308} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 679.62))(GS (sl 0) (sr 0) (t 345.57) (pm PlayOn))(foul 7)(GYR (n torso) (rt -12.09 14.99 -20.26))(ACC (n torso) (a -4.19 -4.37 1.80))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax 0.00))(HJ (n raj1) (ax -101.48))(HJ (n raj2) (ax 0.94))(HJ (n raj3) (ax 58.04))(HJ (n raj4) (ax 79.15))(HJ (n laj1) (ax -104.37))(HJ (n laj2) (ax 1.91))(HJ (n laj3) (ax -58.06))(HJ (n laj4) (ax -79.15))(HJ (n rlj1) (ax -37.58))(HJ (n rlj2) (ax -28.17))(HJ (n rlj3) (ax 88.04))(HJ (n rlj4) (ax -104.06))(HJ (n rlj5) (ax 52.67))(FRP (n rf) (c 0.04 0.04 -0.01) (f 52.03 2.95 26.49))(HJ (n rlj6) (ax 44.86))(HJ (n llj1) (ax -23.95))(HJ (n llj2) (ax 28.30))(HJ (n llj3) (ax 99.98))(HJ (n llj4) (ax -104.04))(HJ (n llj5) (ax 52.68))(FRP (n lf) (c -0.04 -0.01 -0.01) (f -30.15 9.54 49.82))(HJ (n llj6) (ax -44.88)) +{Tue 20:37:11 Step:2308} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2309} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2310} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 679.66))(GS (sl 0) (sr 0) (t 345.61) (pm PlayOn))(foul 7)(GYR (n torso) (rt 64.61 -52.91 -104.93))(ACC (n torso) (a -6.07 -2.31 -0.26))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax 0.00))(HJ (n raj1) (ax -111.10))(HJ (n raj2) (ax 0.94))(HJ (n raj3) (ax 64.07))(HJ (n raj4) (ax 75.02))(HJ (n laj1) (ax -109.83))(HJ (n laj2) (ax 1.95))(HJ (n laj3) (ax -61.10))(HJ (n laj4) (ax -79.17))(HJ (n rlj1) (ax -33.11))(HJ (n rlj2) (ax -26.60))(HJ (n rlj3) (ax 82.05))(HJ (n rlj4) (ax -95.06))(HJ (n rlj5) (ax 53.60))(FRP (n rf) (c 0.04 0.00 -0.01) (f -45.60 32.09 72.63))(HJ (n rlj6) (ax 37.84))(HJ (n llj1) (ax -22.10))(HJ (n llj2) (ax 27.47))(HJ (n llj3) (ax 99.98))(HJ (n llj4) (ax -102.07))(HJ (n llj5) (ax 53.15))(FRP (n lf) (c -0.04 -0.08 -0.01) (f -4.51 -12.24 5.62))(HJ (n llj6) (ax -44.88)) +{Tue 20:37:11 Step:2310} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:11 Step:2311} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2313} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2313} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2315} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2315} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2318} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2319} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2321} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2323} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2323} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2326} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:12 Step:2327} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:12 Step:2328} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2329} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2331} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2332} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:12 Step:2333} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2336} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:12 Step:2337} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2340} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:12 Step:2341} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2344} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:12 Step:2345} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2347} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2347} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2350} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:12 Step:2350} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:12 Step:2351} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2361} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2363} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2363} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2373} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:13 Step:2373} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2375} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:13 Step:2375} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2389} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2391} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2425} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2425} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2428} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2428} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2429} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2432} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2433} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2435} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2437} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2437} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2440} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2451} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2454} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2454} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2457} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2457} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2459} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2459} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2462} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2465} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:15 Step:2465} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2469} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:15 Step:2469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2471} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:15 Step:2471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2473} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:15 Step:2473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2485} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:15 Step:2485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2489} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:15 Step:2489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2492} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:15 Step:2492} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:15 Step:2493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2496} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:15 Step:2496} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:15 Step:2497} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2500} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:15 Step:2501} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2503} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2549} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2551} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2553} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2555} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2558} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2561} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:17 Step:2561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2563} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:17 Step:2563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2565} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:17 Step:2565} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:17 Step:2585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2589} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2592} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2597} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2599} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:17 Step:2599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2602} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2602} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:18 Step:2603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2605} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:18 Step:2605} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2608} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2612} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2619} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:18 Step:2619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2621} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2657} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2660} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2664} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2665} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2667} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2683} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2685} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2687} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2689} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 687.25))(GS (sl 0) (sr 0) (t 353.18) (pm PlayOn))(foul 7)(GYR (n torso) (rt -27.82 -0.88 -1.03))(ACC (n torso) (a 0.03 -11.19 6.79))(HJ (n hj1) (ax 0.01))(HJ (n hj2) (ax -0.02))(See (P (team Gym) (id 1) (rfoot (pol 0.38 -45.82 -58.33)) (lfoot (pol 0.38 47.75 -57.48))) (G1L (pol 5.42 -2.23 53.14)) (G2L (pol 5.07 33.48 48.55)) (F1L (pol 11.99 -55.98 30.45)) (mypos -9.94 -0.87 0.33) (myorien 160.94) (ballpos -9.00 0.00 0.04) (L (pol 6.02 59.78 24.82) (pol 11.99 -56.19 30.06)) (L (pol 11.57 -59.91 27.15) (pol 11.99 -56.01 30.21)) (L (pol 5.05 -39.48 36.61) (pol 3.90 59.35 22.95)) (L (pol 5.06 -39.16 36.58) (pol 6.37 -24.93 42.19)) (L (pol 3.91 59.13 23.09) (pol 5.50 51.28 30.46)))(HJ (n raj1) (ax -77.17))(HJ (n raj2) (ax 0.92))(HJ (n raj3) (ax 42.82))(HJ (n raj4) (ax 76.54))(HJ (n laj1) (ax -77.09))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax -42.80))(HJ (n laj4) (ax -92.88))(HJ (n rlj1) (ax -29.10))(HJ (n rlj2) (ax -32.47))(HJ (n rlj3) (ax 93.44))(HJ (n rlj4) (ax -109.82))(HJ (n rlj5) (ax 50.33))(FRP (n rf) (c 0.04 0.05 -0.01) (f 50.34 -0.52 28.92))(HJ (n rlj6) (ax 44.90))(HJ (n llj1) (ax -28.76))(HJ (n llj2) (ax 32.39))(HJ (n llj3) (ax 93.39))(HJ (n llj4) (ax -109.81))(HJ (n llj5) (ax 50.40))(FRP (n lf) (c -0.04 0.05 -0.01) (f -50.18 -0.70 30.18))(HJ (n llj6) (ax -44.98)) +{Tue 20:37:19 Step:2690} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 687.27))(GS (sl 0) (sr 0) (t 353.20) (pm PlayOn))(foul 7)(GYR (n torso) (rt -28.90 -0.30 -0.97))(ACC (n torso) (a 0.02 -7.36 6.76))(HJ (n hj1) (ax 0.01))(HJ (n hj2) (ax -0.02))(HJ (n raj1) (ax -82.04))(HJ (n raj2) (ax 0.93))(HJ (n raj3) (ax 45.88))(HJ (n raj4) (ax 76.59))(HJ (n laj1) (ax -81.95))(HJ (n laj2) (ax -0.99))(HJ (n laj3) (ax -45.85))(HJ (n laj4) (ax -86.99))(HJ (n rlj1) (ax -27.66))(HJ (n rlj2) (ax -31.63))(HJ (n rlj3) (ax 92.63))(HJ (n rlj4) (ax -107.84))(HJ (n rlj5) (ax 50.80))(FRP (n rf) (c 0.04 0.04 -0.01) (f 55.89 -1.77 27.31))(HJ (n rlj6) (ax 44.90))(HJ (n llj1) (ax -27.36))(HJ (n llj2) (ax 31.54))(HJ (n llj3) (ax 92.57))(HJ (n llj4) (ax -107.84))(HJ (n llj5) (ax 50.88))(FRP (n lf) (c -0.04 0.04 -0.01) (f -55.71 -2.68 26.40))(HJ (n llj6) (ax -44.98)) +{Tue 20:37:19 Step:2690} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2692} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:20 Step:2693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2695} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2698} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2699} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2701} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2703} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2706} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2709} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2712} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2713} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2716} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2721} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2721} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2723} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2723} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2727} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2731} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2731} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2734} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2738} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:21 Step:2739} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2742} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:21 Step:2743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2746} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:21 Step:2747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2750} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:21 Step:2753} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2756} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:21 Step:2761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2764} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:21 Step:2764} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:21 Step:2765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2767} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:21 Step:2767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2770} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:21 Step:2771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2775} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:21 Step:2775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2778} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:21 Step:2779} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2782} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:21 Step:2783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2785} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2787} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2790} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2793} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2796} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2799} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2802} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2805} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2807} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2807} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2810} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2813} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2817} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2819} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2822} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2823} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2827} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2831} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2831} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2834} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:2835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2838} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:2839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2842} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:2843} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2846} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:2847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2850} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:24 Step:2895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2898} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:24 Step:2899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2902} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 691.51))(GS (sl 0) (sr 0) (t 357.44) (pm PlayOn))(foul 7)(GYR (n torso) (rt 195.61 138.30 28.11))(ACC (n torso) (a -4.96 -9.00 11.39))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -77.07))(HJ (n raj2) (ax -0.80))(HJ (n raj3) (ax 42.74))(HJ (n raj4) (ax 75.03))(HJ (n laj1) (ax -77.07))(HJ (n laj2) (ax 1.96))(HJ (n laj3) (ax -42.74))(HJ (n laj4) (ax -86.69))(HJ (n rlj1) (ax -25.14))(HJ (n rlj2) (ax -37.74))(HJ (n rlj3) (ax 100.00))(HJ (n rlj4) (ax -108.74))(HJ (n rlj5) (ax 50.32))(FRP (n rf) (c -0.03 -0.08 -0.01) (f 74.82 9.42 -15.19))(HJ (n rlj6) (ax 24.70))(HJ (n llj1) (ax -26.60))(HJ (n llj2) (ax 32.47))(HJ (n llj3) (ax 70.33))(HJ (n llj4) (ax -108.77))(HJ (n llj5) (ax 50.31))(FRP (n lf) (c 0.04 0.08 -0.01) (f -51.79 22.24 -16.36))(HJ (n llj6) (ax -24.78)) +{Tue 20:37:24 Step:2903} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:24 Step:2903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2905} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:24 Step:2905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2907} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:24 Step:2907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2909} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:24 Step:2909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2911} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:24 Step:2911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2912} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2914} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2917} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:24 Step:2917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2920} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:24 Step:2921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2923} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:24 Step:2923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2939} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2941} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2943} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2943} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2946} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2953} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2953} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2956} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2957} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2959} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2959} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2962} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2963} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2965} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2965} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2968} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2969} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2971} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2971} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2973} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2973} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2976} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:26 Step:3001} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3003} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:3011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3013} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:3013} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3015} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:3015} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3017} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3025} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3027} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:3027} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3030} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:27 Step:3033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3035} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3035} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3037} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3039} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3039} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3041} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3041} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3044} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:27 Step:3047} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3049} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3051} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3051} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3053} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3053} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3055} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3058} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:27 Step:3059} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3061} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3061} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3063} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3065} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3065} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3068} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:27 Step:3073} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3075} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3075} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3077} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3077} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3079} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3079} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3081} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3081} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3084} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:28 Step:3084} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3109} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3111} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3111} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3113} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3113} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3115} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3115} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3116} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3119} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3119} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3121} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3121} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3124} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:28 Step:3124} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3125} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3127} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3127} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3129} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3129} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3131} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3131} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3134} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:29 Step:3139} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3141} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3141} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3144} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:30 Step:3219} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3221} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3221} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3223} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3223} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3225} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3241} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3241} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3244} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:31 Step:3245} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3247} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3249} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3249} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3251} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3251} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3253} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3256} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:31 Step:3259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3261} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3263} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3265} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3265} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3268} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3309} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3312} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3313} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3316} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3317} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 699.82))(GS (sl 0) (sr 0) (t 365.74) (pm PlayOn))(foul 7)(GYR (n torso) (rt 99.44 13.13 -25.15))(ACC (n torso) (a -1.43 9.49 2.62))(HJ (n hj1) (ax -0.04))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.14 -23.31 -6.70)) (llowerarm (pol 0.19 44.40 -4.85)) (rfoot (pol 0.45 -2.35 -59.62)) (lfoot (pol 0.45 4.95 -59.49))) (F2L (pol 10.76 -14.56 -44.30)) (mypos -9.63 -0.68 0.24) (myorien -110.30) (ballpos -9.00 0.00 0.04) (L (pol 10.77 -14.68 -44.42) (pol 5.75 -59.91 -27.86)) (L (pol 10.80 60.03 -28.40) (pol 10.75 -14.66 -44.44)) (L (pol 3.84 -59.88 -29.65) (pol 4.26 -48.61 -36.05)) (L (pol 4.26 -48.96 -35.91) (pol 5.86 -57.49 -29.74)))(HJ (n raj1) (ax 8.30))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 47.77))(HJ (n raj4) (ax 84.02))(HJ (n laj1) (ax 8.29))(HJ (n laj2) (ax 27.01))(HJ (n laj3) (ax -47.67))(HJ (n laj4) (ax -84.22))(HJ (n rlj1) (ax -42.47))(HJ (n rlj2) (ax 26.24))(HJ (n rlj3) (ax 11.44))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax 52.81))(HJ (n rlj6) (ax 47.16))(HJ (n llj1) (ax -42.77))(HJ (n llj2) (ax -26.24))(HJ (n llj3) (ax 11.19))(HJ (n llj4) (ax 0.99))(HJ (n llj5) (ax 52.67))(HJ (n llj6) (ax -47.16)) +{Tue 20:37:33 Step:3319} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3322} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:33 Step:3325} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3327} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3327} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3329} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3331} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3333} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3333} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3335} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3335} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3336} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3341} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:33 Step:3343} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3343} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3345} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3345} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3347} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3347} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3349} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3349} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3351} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3351} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3353} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3353} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3407} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3409} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:34 Step:3409} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3412} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3413} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3416} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3417} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3419} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:35 Step:3419} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3423} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:35 Step:3423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3427} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:35 Step:3427} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3430} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:35 Step:3439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3441} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:35 Step:3441} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3445} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:35 Step:3445} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3447} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:35 Step:3447} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3449} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:35 Step:3449} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3451} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:35 Step:3451} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3453} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3455} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:35 Step:3455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3457} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:35 Step:3457} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3460} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:35 Step:3463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3465} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3468} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3472} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3476} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3477} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3481} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3484} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3488} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3493} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3496} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3496} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3497} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3500} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3501} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3503} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3507} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3510} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3513} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:37 Step:3513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3516} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:38 Step:3609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3611} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3613} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3616} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3619} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3621} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3625} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3627} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 706.03))(GS (sl 0) (sr 0) (t 371.93) (pm PlayOn))(foul 7)(GYR (n torso) (rt -235.79 -48.79 32.77))(ACC (n torso) (a 1.05 -0.20 0.75))(HJ (n hj1) (ax 0.50))(HJ (n hj2) (ax 0.50))(See (P (team Gym) (id 1) (llowerarm (pol 0.27 34.96 -48.15)) (rfoot (pol 0.40 -4.78 -44.84)) (lfoot (pol 0.40 5.24 -44.65))) (G2L (pol 5.37 -54.69 -0.56)) (F2L (pol 10.67 1.91 -10.75)) (mypos -9.66 -0.76 0.31) (myorien -121.78) (ballpos -9.00 0.00 0.04) (L (pol 10.67 1.90 -10.84) (pol 5.35 -59.75 -8.64)) (L (pol 10.42 60.02 -5.58) (pol 10.67 1.99 -10.75)) (L (pol 3.55 -59.78 -10.18) (pol 4.20 -26.40 -12.62)) (L (pol 4.19 -26.39 -12.69) (pol 5.79 -35.95 -10.86)))(HJ (n raj1) (ax -47.69))(HJ (n raj2) (ax -69.04))(HJ (n raj3) (ax 99.71))(HJ (n raj4) (ax 14.65))(HJ (n laj1) (ax -47.69))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax -99.77))(HJ (n laj4) (ax -14.58))(HJ (n rlj1) (ax -0.72))(HJ (n rlj2) (ax 25.34))(HJ (n rlj3) (ax 80.10))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax -8.58))(FRP (n rf) (c 0.05 -0.08 0.00) (f 82.66 59.32 -2.12))(HJ (n rlj6) (ax 47.53))(HJ (n llj1) (ax -0.84))(HJ (n llj2) (ax -25.90))(HJ (n llj3) (ax 80.09))(HJ (n llj4) (ax 1.02))(HJ (n llj5) (ax -8.54))(FRP (n lf) (c -0.05 -0.09 0.00) (f -89.26 41.44 -1.76))(HJ (n llj6) (ax -47.53)) +{Tue 20:37:39 Step:3627} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3627} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3631} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 706.11))(GS (sl 0) (sr 0) (t 372.01) (pm PlayOn))(foul 7)(GYR (n torso) (rt -123.42 -7.02 -108.08))(ACC (n torso) (a 3.90 -1.22 14.46))(HJ (n hj1) (ax 0.72))(HJ (n hj2) (ax 0.72))(See (P (team Gym) (id 1) (rfoot (pol 0.39 -8.85 -40.96)) (lfoot (pol 0.38 9.20 -41.12))) (G2L (pol 5.36 -52.66 -0.74)) (F2L (pol 10.66 4.11 -10.45)) (mypos -9.67 -0.77 0.31) (myorien -124.18) (ballpos -9.00 0.00 0.04) (L (pol 10.68 4.46 -10.45) (pol 5.35 -60.06 -8.39)) (L (pol 10.21 60.14 -5.65) (pol 10.66 4.24 -10.31)) (L (pol 3.54 -60.07 -10.07) (pol 4.18 -23.89 -12.65)) (L (pol 4.18 -23.94 -12.57) (pol 5.77 -33.54 -10.73)))(HJ (n raj1) (ax -75.77))(HJ (n raj2) (ax -97.10))(HJ (n raj3) (ax 114.33))(HJ (n raj4) (ax 1.21))(HJ (n laj1) (ax -75.77))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax -114.42))(HJ (n laj4) (ax -0.96))(HJ (n rlj1) (ax -0.63))(HJ (n rlj2) (ax 27.06))(HJ (n rlj3) (ax 90.11))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax -36.59))(HJ (n rlj6) (ax 47.57))(HJ (n llj1) (ax -0.78))(HJ (n llj2) (ax -27.05))(HJ (n llj3) (ax 89.89))(HJ (n llj4) (ax 1.02))(HJ (n llj5) (ax -36.56))(FRP (n lf) (c -0.05 -0.09 -0.00) (f -25.02 15.14 -60.87))(HJ (n llj6) (ax -47.58)) +{Tue 20:37:39 Step:3631} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3631} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3633} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3633} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3636} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3637} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3640} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3640} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3642} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3643} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3645} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3647} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3649} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3652} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3661} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3663} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3666} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3670} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3674} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3678} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3681} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3685} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3693} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3723} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3726} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:41 Step:3733} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3735} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3737} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3739} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3741} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3743} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 708.35))(GS (sl 0) (sr 0) (t 374.25) (pm PlayOn))(foul 7)(GYR (n torso) (rt -236.18 0.23 -0.61))(ACC (n torso) (a 0.02 6.06 6.77))(HJ (n hj1) (ax -0.01))(HJ (n hj2) (ax 0.01))(See (P (team Gym) (id 1) (rlowerarm (pol 0.10 -20.11 13.11)) (llowerarm (pol 0.11 25.17 12.62)) (rfoot (pol 0.28 -53.69 -18.33)) (lfoot (pol 0.29 55.06 -17.60))) (G1L (pol 5.58 -42.68 18.35)) (G2L (pol 5.21 -19.52 22.43)) (F2L (pol 10.45 41.95 11.86)) (mypos -9.80 -0.94 0.29) (myorien -160.69) (ballpos -9.00 0.00 0.04) (L (pol 10.46 41.72 11.96) (pol 6.81 -60.01 6.59)) (L (pol 9.25 59.75 7.18) (pol 10.45 41.70 11.72)) (L (pol 4.47 -60.24 5.24) (pol 3.99 12.68 13.35)) (L (pol 6.10 -59.90 6.51) (pol 6.51 -57.25 7.13)) (L (pol 3.98 12.18 13.14) (pol 5.60 2.53 14.82)))(HJ (n raj1) (ax 51.40))(HJ (n raj2) (ax 4.90))(HJ (n raj3) (ax -22.27))(HJ (n raj4) (ax 69.00))(HJ (n laj1) (ax 51.40))(HJ (n laj2) (ax -4.91))(HJ (n laj3) (ax 22.27))(HJ (n laj4) (ax -69.00))(HJ (n rlj1) (ax -57.53))(HJ (n rlj2) (ax 2.43))(HJ (n rlj3) (ax 101.08))(HJ (n rlj4) (ax -20.06))(HJ (n rlj5) (ax -42.48))(HJ (n rlj6) (ax 39.35))(HJ (n llj1) (ax -57.53))(HJ (n llj2) (ax -2.43))(HJ (n llj3) (ax 101.08))(HJ (n llj4) (ax -20.06))(HJ (n llj5) (ax -42.48))(HJ (n llj6) (ax -39.35)) +{Tue 20:37:41 Step:3743} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3746} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:41 Step:3747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3750} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:41 Step:3751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3753} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3753} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3756} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3756} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3760} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3760} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3763} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3765} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3768} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3771} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3773} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3773} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3776} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3779} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3801} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3803} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3805} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3808} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3809} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3811} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3814} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3817} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3820} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3821} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3823} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3823} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3825} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3825} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3828} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3828} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3831} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3833} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3836} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3839} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3842} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3843} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3845} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3845} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3848} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3849} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3851} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3853} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3853} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3855} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3855} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3858} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3859} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3865} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3865} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3868} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3959} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3961} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:3961} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3963} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3965} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:3965} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3967} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3969} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:47 Step:3987} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3992} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3993} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3996} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3999} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:47 Step:3999} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:4002} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:4003} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:4006} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:4009} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:4011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:4014} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:4015} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:4017} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:48 Step:4029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4031} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:48 Step:4031} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4034} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4063} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4065} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:49 Step:4065} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4067} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:49 Step:4067} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4070} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4071} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4073} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:49 Step:4073} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4075} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:49 Step:4085} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4089} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4089} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4092} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4093} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4096} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4097} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4099} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:49 Step:4099} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4103} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4103} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4107} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4107} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4111} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4111} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4113} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4113} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4115} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4115} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4119} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4119} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4121} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4121} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4123} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4127} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 716.04))(GS (sl 0) (sr 0) (t 381.93) (pm PlayOn))(foul 7)(GYR (n torso) (rt -340.66 112.96 116.43))(ACC (n torso) (a 0.95 -1.15 3.75))(HJ (n hj1) (ax -70.17))(HJ (n hj2) (ax -35.04))(See (P (team Gym) (id 1) (rlowerarm (pol 0.29 1.24 -12.94)) (rfoot (pol 0.46 4.80 -51.63)) (lfoot (pol 0.48 6.47 -56.93))) (G1L (pol 5.39 -34.66 54.64)) (F1L (pol 12.25 -28.47 13.18)) (B (pol 1.73 -22.88 -52.19)) (mypos -10.16 -1.27 0.28) (myorien 102.31) (ballpos -9.00 0.00 0.04) (L (pol 5.17 -17.85 58.72) (pol 12.27 -28.52 13.11)) (L (pol 15.96 -34.75 -54.74) (pol 12.27 -28.71 13.10)) (L (pol 5.25 -25.46 25.30) (pol 3.24 -13.87 59.06)) (L (pol 5.24 -25.48 25.18) (pol 6.45 -24.18 38.41)))(HJ (n raj1) (ax -88.73))(HJ (n raj2) (ax -30.81))(HJ (n raj3) (ax 94.44))(HJ (n raj4) (ax 58.81))(HJ (n laj1) (ax -86.44))(HJ (n laj2) (ax 31.36))(HJ (n laj3) (ax -93.96))(HJ (n laj4) (ax -58.72))(HJ (n rlj1) (ax -33.66))(HJ (n rlj2) (ax 2.81))(HJ (n rlj3) (ax 27.27))(HJ (n rlj4) (ax -109.61))(HJ (n rlj5) (ax 26.27))(FRP (n rf) (c -0.04 0.08 -0.01) (f -12.57 -57.16 -37.71))(HJ (n rlj6) (ax 45.00))(HJ (n llj1) (ax -33.89))(HJ (n llj2) (ax 2.93))(HJ (n llj3) (ax 24.31))(HJ (n llj4) (ax -108.51))(HJ (n llj5) (ax 29.53))(HJ (n llj6) (ax -45.00)) +{Tue 20:37:50 Step:4127} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4129} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4223} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4225} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4225} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4228} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:52 Step:4229} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4232} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:53 Step:4241} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4243} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4243} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4247} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:53 Step:4247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4249} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4249} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4253} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:53 Step:4253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4256} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:53 Step:4257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4259} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4261} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4264} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:53 Step:4265} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4267} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4267} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4270} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:53 Step:4273} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4275} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4275} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4277} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4277} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:55 Step:4339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4341} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4341} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4346} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4349} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4351} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4361} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4364} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4365} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4368} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4368} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4369} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4372} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4375} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4378} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4379} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4382} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4383} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4385} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4388} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4391} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4393} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4393} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4396} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4397} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4399} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4399} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4403} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4403} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4406} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4407} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:56 Step:4409} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4411} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4413} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 721.76))(GS (sl 0) (sr 0) (t 387.65) (pm PlayOn))(foul 7)(GYR (n torso) (rt 142.29 -158.15 6.64))(ACC (n torso) (a -7.23 -6.65 17.81))(HJ (n hj1) (ax -88.45))(HJ (n hj2) (ax -27.36))(See (P (team Gym) (id 1) (rlowerarm (pol 0.25 33.94 -26.90))) (G1L (pol 4.84 -3.76 55.45)) (F1L (pol 12.01 -7.57 13.62)) (mypos -10.76 -1.22 0.24) (myorien 99.30) (ballpos -9.00 0.00 0.04) (L (pol 4.52 18.65 58.87) (pol 12.00 -7.84 13.66)) (L (pol 18.11 -32.47 -55.72) (pol 11.99 -7.90 13.83)) (L (pol 4.88 -3.47 21.96) (pol 2.60 23.14 57.96)) (L (pol 4.88 -3.54 22.30) (pol 5.98 1.51 36.90)))(HJ (n raj1) (ax -60.44))(HJ (n raj2) (ax -4.55))(HJ (n raj3) (ax 93.05))(HJ (n raj4) (ax 58.65))(HJ (n laj1) (ax -100.48))(HJ (n laj2) (ax 4.09))(HJ (n laj3) (ax -92.59))(HJ (n laj4) (ax -23.83))(HJ (n rlj1) (ax 5.39))(HJ (n rlj2) (ax 25.97))(HJ (n rlj3) (ax 16.46))(HJ (n rlj4) (ax -51.84))(HJ (n rlj5) (ax 48.30))(HJ (n rlj6) (ax -3.62))(HJ (n llj1) (ax -10.93))(HJ (n llj2) (ax -15.77))(HJ (n llj3) (ax 43.76))(HJ (n llj4) (ax -135.29))(HJ (n llj5) (ax 2.85))(HJ (n llj6) (ax 25.22)) +{Tue 20:37:56 Step:4413} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4413} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4416} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4417} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4420} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:57 Step:4421} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4423} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4425} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4425} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4427} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4514} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4518} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4521} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4535} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4540} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4544} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4547} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 724.44))(GS (sl 0) (sr 0) (t 390.32) (pm PlayOn))(foul 7)(GYR (n torso) (rt -65.64 347.77 -193.11))(ACC (n torso) (a -2.76 -3.32 -0.27))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax 0.03))(See (P (team Gym) (id 1) (rfoot (pol 0.39 -35.47 -57.37))) (G2L (pol 4.37 -44.04 45.92)) (F2L (pol 9.93 41.49 32.19)) (mypos -10.65 -1.07 0.39) (myorien -145.39) (ballpos -9.00 0.00 0.04) (L (pol 9.92 41.53 32.09) (pol 4.68 -60.04 26.23)) (L (pol 8.98 60.14 19.15) (pol 9.96 41.48 32.20)) (L (pol 2.80 -60.16 22.13) (pol 3.22 8.99 37.91)) (L (pol 3.21 8.76 38.00) (pol 4.76 -7.96 41.30)))(HJ (n raj1) (ax -96.73))(HJ (n raj2) (ax -11.13))(HJ (n raj3) (ax 55.03))(HJ (n raj4) (ax 90.39))(HJ (n laj1) (ax -90.25))(HJ (n laj2) (ax 12.09))(HJ (n laj3) (ax -55.11))(HJ (n laj4) (ax -90.53))(HJ (n rlj1) (ax -14.07))(HJ (n rlj2) (ax -29.27))(HJ (n rlj3) (ax 98.43))(HJ (n rlj4) (ax -100.58))(HJ (n rlj5) (ax 52.16))(FRP (n rf) (c -0.04 -0.09 -0.01) (f 44.17 -47.32 -3.02))(HJ (n rlj6) (ax 11.25))(HJ (n llj1) (ax -15.01))(HJ (n llj2) (ax 29.17))(HJ (n llj3) (ax 62.76))(HJ (n llj4) (ax -100.80))(HJ (n llj5) (ax 52.17))(FRP (n lf) (c -0.04 0.08 -0.01) (f -14.82 19.82 53.67))(HJ (n llj6) (ax -45.03)) +{Tue 20:37:59 Step:4548} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4552} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4556} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4560} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4564} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4568} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4575} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4578} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4658} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4662} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4665} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4665} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4667} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4669} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 726.89))(GS (sl 0) (sr 0) (t 392.76) (pm PlayOn))(foul 7)(GYR (n torso) (rt -6.63 29.04 102.26))(ACC (n torso) (a -6.32 -5.28 6.02))(HJ (n hj1) (ax -0.22))(HJ (n hj2) (ax 0.00))(See (G1L (pol 4.66 -59.69 26.19)) (G2L (pol 4.10 -31.85 39.30)) (F2L (pol 9.77 48.53 25.91)) (mypos -10.91 -1.14 0.34) (myorien -158.50) (ballpos -9.00 0.00 0.04) (L (pol 9.77 48.69 25.75) (pol 4.98 -60.03 14.86)) (L (pol 9.09 60.00 19.99) (pol 9.76 48.58 25.91)) (L (pol 2.86 -59.82 11.41) (pol 2.96 19.18 29.68)) (L (pol 2.97 19.33 29.75) (pol 4.51 2.19 33.37)))(HJ (n raj1) (ax -101.97))(HJ (n raj2) (ax 6.60))(HJ (n raj3) (ax 57.68))(HJ (n raj4) (ax 83.25))(HJ (n laj1) (ax -101.54))(HJ (n laj2) (ax -1.02))(HJ (n laj3) (ax -58.19))(HJ (n laj4) (ax -84.54))(HJ (n rlj1) (ax -23.22))(HJ (n rlj2) (ax -28.62))(HJ (n rlj3) (ax 100.03))(HJ (n rlj4) (ax -130.15))(HJ (n rlj5) (ax 53.30))(FRP (n rf) (c 0.04 0.08 -0.01) (f 36.99 9.16 35.60))(HJ (n rlj6) (ax 45.12))(HJ (n llj1) (ax -22.04))(HJ (n llj2) (ax 29.31))(HJ (n llj3) (ax 102.84))(HJ (n llj4) (ax -130.03))(HJ (n llj5) (ax 52.71))(FRP (n lf) (c -0.03 -0.02 -0.02) (f -43.33 1.20 84.24))(HJ (n llj6) (ax -49.38)) +{Tue 20:38:02 Step:4670} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 726.91))(GS (sl 0) (sr 0) (t 392.78) (pm PlayOn))(foul 7)(GYR (n torso) (rt 56.25 52.20 -49.89))(ACC (n torso) (a 9.68 -5.18 15.24))(HJ (n hj1) (ax -0.26))(HJ (n hj2) (ax 0.00))(HJ (n raj1) (ax -106.95))(HJ (n raj2) (ax -0.64))(HJ (n raj3) (ax 60.68))(HJ (n raj4) (ax 90.27))(HJ (n laj1) (ax -106.44))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax -61.29))(HJ (n laj4) (ax -91.57))(HJ (n rlj1) (ax -19.93))(HJ (n rlj2) (ax -27.85))(HJ (n rlj3) (ax 99.99))(HJ (n rlj4) (ax -128.30))(HJ (n rlj5) (ax 53.90))(FRP (n rf) (c 0.04 0.08 -0.01) (f 37.65 -3.45 17.91))(HJ (n rlj6) (ax 45.00))(HJ (n llj1) (ax -21.39))(HJ (n llj2) (ax 28.41))(HJ (n llj3) (ax 99.47))(HJ (n llj4) (ax -128.21))(HJ (n llj5) (ax 53.19))(FRP (n lf) (c -0.04 0.01 -0.01) (f 44.31 3.59 85.46))(HJ (n llj6) (ax -44.43)) +{Tue 20:38:02 Step:4670} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4673} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4675} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4678} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4681} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4684} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4688} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4689} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4691} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4694} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4697} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4700} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4700} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4703} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4707} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4710} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4711} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4713} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4713} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4716} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4720} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4721} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4723} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4723} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4726} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4726} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:04 Step:4727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4730} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4731} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4733} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4733} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4737} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4740} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4741} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4744} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4747} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4749} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4765} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4769} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4771} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4775} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4778} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4779} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4781} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4783} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4785} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4787} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4789} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4791} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4793} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:06 Step:4793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4795} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:06 Step:4795} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4798} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4798} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:06 Step:4799} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4801} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:06 Step:4801} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4803} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:06 Step:4803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4805} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:06 Step:4805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4808} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4809} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4812} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4815} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:06 Step:4815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4817} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:06 Step:4817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4820} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4821} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4823} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:06 Step:4823} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4826} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4829} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4831} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4831} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4834} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4837} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4840} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4841} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4843} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4843} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4845} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4845} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4848} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4849} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4851} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4853} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4853} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4858} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4859} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4862} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4865} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:08 Step:4865} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4867} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:08 Step:4867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4871} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4874} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4875} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4877} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:08 Step:4877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4880} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4881} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4884} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4885} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4887} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:08 Step:4887} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4891} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4894} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4898} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4903} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:08 Step:4903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4906} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4909} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4911} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4913} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4916} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:4917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4919} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4921} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4924} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:4925} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4927} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4927} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4929} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4929} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4931} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4931} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4933} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4936} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:4937} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4939} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4939} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4942} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:4943} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4946} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:4947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4949} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:10 Step:4949} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4953} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4953} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4957} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4957} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4959} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:10 Step:4959} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4965} Server_Comm.py: The agent lost 5 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4965} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4970} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4971} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4976} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4977} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4979} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:10 Step:4979} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4982} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4986} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4987} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4989} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:4989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4991} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:4991} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4994} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:4995} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4999} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5001} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5004} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5005} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5007} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:5007} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5009} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:5009} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5012} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5013} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5016} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5017} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5021} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:5021} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5023} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:5023} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:5026} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:5027} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5031} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5035} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5035} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5037} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5040} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:12 Step:5041} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5043} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5043} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5045} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5047} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:5089} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5091} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:5091} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5094} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:13 Step:5095} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5099} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5101} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:5101} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5104} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:13 Step:5105} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5107} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:5107} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5110} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:13 Step:5111} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5113} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:5113} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5116} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5119} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:14 Step:5119} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5121} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:14 Step:5121} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:14 Step:5123} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5125} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:14 Step:5125} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5128} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5129} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5132} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5135} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:14 Step:5135} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5139} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5141} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5143} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:14 Step:5143} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5146} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5147} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5151} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5151} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5153} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:14 Step:5153} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5157} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5157} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5161} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5193} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5195} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:15 Step:5195} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5198} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5199} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5201} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5201} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5203} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5205} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5205} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5207} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5207} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5209} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5215} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5217} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5220} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5220} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5221} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5223} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5223} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5225} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5225} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5229} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5229} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5232} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5233} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5234} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:17 Step:5235} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5236} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 738.24))(GS (sl 0) (sr 0) (t 404.10) (pm PlayOn))(foul 7)(GYR (n torso) (rt 13.89 15.81 122.70))(ACC (n torso) (a -8.54 6.87 -4.92))(HJ (n hj1) (ax 21.07))(HJ (n hj2) (ax -20.97))(HJ (n raj1) (ax -83.61))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 79.33))(HJ (n raj4) (ax 5.78))(HJ (n laj1) (ax -82.94))(HJ (n laj2) (ax 20.04))(HJ (n laj3) (ax -79.62))(HJ (n laj4) (ax -5.47))(HJ (n rlj1) (ax -23.24))(HJ (n rlj2) (ax -40.69))(HJ (n rlj3) (ax 78.52))(HJ (n rlj4) (ax -108.13))(HJ (n rlj5) (ax 48.79))(HJ (n rlj6) (ax -4.33))(HJ (n llj1) (ax -1.35))(HJ (n llj2) (ax 44.24))(HJ (n llj3) (ax 77.45))(HJ (n llj4) (ax -125.18))(HJ (n llj5) (ax 73.77))(HJ (n llj6) (ax 2.54)) +{Tue 20:38:17 Step:5238} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5239} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5241} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5241} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5243} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5243} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5245} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5245} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5248} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5249} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5251} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5253} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5256} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5259} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5262} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5263} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5265} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5265} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5267} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5267} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5271} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5271} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5273} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5273} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5276} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5279} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5281} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5281} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5284} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5284} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:18 Step:5285} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5289} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5289} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5292} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5293} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5296} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5297} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5300} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5301} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5303} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5303} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5305} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5305} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5308} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:19 Step:5345} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5347} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5347} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5349} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5349} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5351} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5351} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5353} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5353} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5356} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:20 Step:5365} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5367} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5367} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5369} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5369} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5371} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5374} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:20 Step:5375} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5379} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5383} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:20 Step:5383} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5386} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:20 Step:5387} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5389} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5389} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5392} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5443} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5445} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5447} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5447} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5450} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5453} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5455} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5458} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5463} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5467} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5474} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5475} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5478} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5481} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5483} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5483} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5485} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 743.22))(GS (sl 0) (sr 0) (t 409.07) (pm PlayOn))(foul 7)(GYR (n torso) (rt -72.16 80.30 248.41))(ACC (n torso) (a 12.56 -6.85 4.02))(HJ (n hj1) (ax 42.05))(HJ (n hj2) (ax -41.90))(See (P (team Gym) (id 1) (rlowerarm (pol 0.26 -46.91 -49.45)) (llowerarm (pol 0.22 -0.05 -30.94)) (lfoot (pol 0.40 5.34 -8.89))) (F1L (pol 11.72 42.11 -25.47)) (B (pol 1.43 19.28 57.11)) (mypos -10.23 -0.68 0.33) (myorien 87.52) (ballpos -9.00 0.00 0.04) (L (pol 4.74 39.33 -40.05) (pol 3.73 36.40 -54.39)) (L (pol 4.74 39.30 -40.48) (pol 6.03 40.00 -53.44)))(HJ (n raj1) (ax -86.68))(HJ (n raj2) (ax -23.37))(HJ (n raj3) (ax 38.75))(HJ (n raj4) (ax 69.15))(HJ (n laj1) (ax -86.46))(HJ (n laj2) (ax -3.85))(HJ (n laj3) (ax -38.77))(HJ (n laj4) (ax -86.66))(HJ (n rlj1) (ax -15.71))(HJ (n rlj2) (ax -45.03))(HJ (n rlj3) (ax 25.65))(HJ (n rlj4) (ax -81.18))(HJ (n rlj5) (ax 73.50))(HJ (n rlj6) (ax -28.00))(HJ (n llj1) (ax -16.64))(HJ (n llj2) (ax 45.07))(HJ (n llj3) (ax 100.00))(HJ (n llj4) (ax -78.56))(HJ (n llj5) (ax -51.78))(FRP (n lf) (c 0.04 0.08 0.01) (f -16.40 5.99 0.17))(HJ (n llj6) (ax 25.73)) +{Tue 20:38:22 Step:5485} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5487} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5487} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5490} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5493} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5501} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5504} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5505} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5508} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5515} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5517} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5519} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5522} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5525} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5528} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5531} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5531} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5534} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5538} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5541} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5544} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5547} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:24 Step:5547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5550} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5555} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:24 Step:5555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5559} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5562} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5566} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5597} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5599} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5602} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5605} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5605} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5608} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5623} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5625} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5628} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5628} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5629} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5630} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 746.13))(GS (sl 0) (sr 0) (t 411.97) (pm PlayOn))(foul 7)(GYR (n torso) (rt -94.02 -40.97 2.35))(ACC (n torso) (a 1.60 -3.76 10.13))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -72.22))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 39.96))(HJ (n raj4) (ax 86.20))(HJ (n laj1) (ax -72.22))(HJ (n laj2) (ax -1.00))(HJ (n laj3) (ax -39.94))(HJ (n laj4) (ax -90.17))(HJ (n rlj1) (ax -29.10))(HJ (n rlj2) (ax -33.32))(HJ (n rlj3) (ax 100.01))(HJ (n rlj4) (ax -110.73))(HJ (n rlj5) (ax 52.62))(FRP (n rf) (c 0.02 -0.08 -0.01) (f 26.35 -14.42 37.04))(HJ (n rlj6) (ax 44.99))(HJ (n llj1) (ax -33.16))(HJ (n llj2) (ax 33.32))(HJ (n llj3) (ax 99.95))(HJ (n llj4) (ax -111.82))(HJ (n llj5) (ax 49.85))(FRP (n lf) (c -0.00 0.08 -0.01) (f -49.31 13.14 18.18))(HJ (n llj6) (ax -44.98)) +{Tue 20:38:26 Step:5632} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5633} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5636} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 746.25))(GS (sl 0) (sr 0) (t 412.09) (pm PlayOn))(foul 7)(GYR (n torso) (rt 119.56 183.00 -5.08))(ACC (n torso) (a 8.11 -15.62 8.77))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -86.80))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 49.20))(HJ (n raj4) (ax 86.27))(HJ (n laj1) (ax -101.39))(HJ (n laj2) (ax -1.02))(HJ (n laj3) (ax -57.30))(HJ (n laj4) (ax -62.35))(HJ (n rlj1) (ax -26.70))(HJ (n rlj2) (ax -30.81))(HJ (n rlj3) (ax 100.00))(HJ (n rlj4) (ax -104.78))(HJ (n rlj5) (ax 54.03))(FRP (n rf) (c 0.04 -0.08 -0.01) (f 23.93 -17.08 23.52))(HJ (n rlj6) (ax 44.99))(HJ (n llj1) (ax -25.48))(HJ (n llj2) (ax 28.26))(HJ (n llj3) (ax 82.45))(HJ (n llj4) (ax -96.68))(HJ (n llj5) (ax 52.66))(FRP (n lf) (c -0.04 0.08 -0.01) (f -17.36 9.90 39.01))(HJ (n llj6) (ax -44.98)) +{Tue 20:38:26 Step:5637} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5637} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5640} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5640} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:26 Step:5641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5644} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5649} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5652} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5655} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5658} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5661} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5663} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5666} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5669} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5671} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5674} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5677} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5679} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5683} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5685} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5689} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5689} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5692} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5695} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5698} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5699} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5701} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5704} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5707} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5712} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5713} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5716} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5719} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5722} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5723} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5725} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5725} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5728} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5729} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5731} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5731} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5735} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5739} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5739} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5742} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5745} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5749} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5751} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5753} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5753} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5755} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5758} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5764} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5767} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5770} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5773} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5776} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5779} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5779} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5782} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5786} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5790} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5793} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5796} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5797} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5799} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:5799} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5803} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5806} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5807} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5810} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5814} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5817} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:5817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5819} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:5819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5823} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5823} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5826} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5829} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:5829} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5832} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5835} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:5835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5837} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:5837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5840} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5841} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5844} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5845} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5847} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:31 Step:5847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5850} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5854} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5855} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5857} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:31 Step:5857} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5860} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5863} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:31 Step:5863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5866} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5869} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:31 Step:5869} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5872} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5876} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5880} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5881} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5884} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5885} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5888} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5889} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5894} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5897} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:32 Step:5897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5900} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5904} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5908} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5912} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5915} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:32 Step:5915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5920} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5924} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5924} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5925} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5928} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:5929} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5931} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:33 Step:5931} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5933} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:33 Step:5933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5936} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:5937} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5940} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:5941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5943} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:33 Step:5943} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5946} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:5947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5950} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? diff --git a/logs/2025-11-04_20.36.22__RCZFIU/Gym_1.log b/logs/2025-11-04_20.36.22__RCZFIU/Gym_1.log new file mode 100644 index 0000000..5c5c814 --- /dev/null +++ b/logs/2025-11-04_20.36.22__RCZFIU/Gym_1.log @@ -0,0 +1,1872 @@ +{Tue 20:36:22 Step:1} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:22 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 86, +Msg: (time (now 634.90))(GS (unum 1) (team left) (sl 0) (sr 0) (t 259.48) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:22 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 94, +Msg: (time (now 634.90))(GS (unum 1) (team left) (sl 0) (sr 0) (t 259.48) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:22 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 102, +Msg: (time (now 634.90))(GS (unum 1) (team left) (sl 0) (sr 0) (t 259.48) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:22 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 110, +Msg: (time (now 634.90))(GS (unum 1) (team left) (sl 0) (sr 0) (t 259.48) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:22 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 118, +Msg: (time (now 634.90))(GS (unum 1) (team left) (sl 0) (sr 0) (t 259.48) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:22 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 126, +Msg: (time (now 634.90))(GS (unum 1) (team left) (sl 0) (sr 0) (t 259.48) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:22 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 134, +Msg: (time (now 634.90))(GS (unum 1) (team left) (sl 0) (sr 0) (t 259.48) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:22 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 142, +Msg: (time (now 634.90))(GS (unum 1) (team left) (sl 0) (sr 0) (t 259.48) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:22 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 150, +Msg: (time (now 634.90))(GS (unum 1) (team left) (sl 0) (sr 0) (t 259.48) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:22 Step:4} World_Parser.py: Unknown root tag: bytearray(b'foul') at 158, +Msg: (time (now 634.90))(GS (unum 1) (team left) (sl 0) (sr 0) (t 259.48) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 29.42))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax -0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax 0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:22 Step:5} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:22 Step:7} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:22 Step:7} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:22 Step:9} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:22 Step:9} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:22 Step:12} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:32 Step:13} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:32 Step:519} Server_Comm.py: The agent lost 505 consecutive packets! Is syncmode disabled? +{Tue 20:36:32 Step:519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:521} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:32 Step:521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:524} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:32 Step:525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:527} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:32 Step:527} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:529} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:32 Step:529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:531} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:32 Step:531} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:534} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:32 Step:535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:537} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:32 Step:537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:539} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:541} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:543} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:543} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:547} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:551} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:553} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:555} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:558} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:562} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:565} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:569} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:572} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:577} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:581} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:583} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:583} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:585} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:587} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:590} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:594} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:597} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:600} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:601} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:603} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:605} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:605} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:608} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:611} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:614} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:617} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:620} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:624} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:627} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:629} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:629} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:632} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:633} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:635} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:635} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:637} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:637} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:640} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:643} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:643} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:645} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:645} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:648} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:651} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:654} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:659} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:662} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:665} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:672} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:675} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:36 Step:675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:677} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:36 Step:677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:680} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:684} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:687} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:36 Step:687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:690} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:694} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:697} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:36 Step:697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:701} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:704} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:707} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:36 Step:707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:710} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:711} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:714} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:718} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:718} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:37 Step:719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:721} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:721} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:724} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:724} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:37 Step:725} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:727} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 649.37))(GS (sl 0) (sr 0) (t 273.93) (pm PlayOn))(foul 7)(GYR (n torso) (rt 322.73 20.76 20.18))(ACC (n torso) (a 11.45 -1.63 -7.62))(HJ (n hj1) (ax 44.10))(HJ (n hj2) (ax -42.28))(See (P (team Gym) (id 1) (rlowerarm (pol 0.26 -47.59 -52.50)) (llowerarm (pol 0.22 0.58 -35.80)) (lfoot (pol 0.38 57.89 -55.11))) (G2R (pol 24.84 -8.26 -47.27)) (G1R (pol 24.79 -3.25 -44.03)) (F1R (pol 26.40 15.62 -30.81)) (F2R (pol 27.01 -35.65 -57.56)) (mypos -9.77 0.72 0.35) (myorien 35.72) (ballpos -9.00 0.00 0.04) (L (pol 10.32 -26.95 -56.98) (pol 13.50 30.53 -12.23)) (L (pol 26.99 -36.15 -57.49) (pol 26.45 15.66 -30.87)) (L (pol 26.47 15.73 -30.71) (pol 9.31 60.17 29.00)) (L (pol 23.11 3.66 -42.25) (pol 23.26 -13.25 -51.75)) (L (pol 23.04 3.66 -42.24) (pol 24.87 3.16 -42.43)) (L (pol 23.24 -13.41 -51.56) (pol 25.05 -12.48 -51.18)) (L (pol 11.79 -5.50 -49.17) (pol 11.40 1.06 -45.21)) (L (pol 11.40 1.18 -45.19) (pol 10.44 5.43 -42.37)) (L (pol 10.44 5.53 -42.31) (pol 9.24 6.51 -41.61)) (L (pol 9.23 6.52 -41.85) (pol 8.18 2.64 -45.09)) (L (pol 8.17 2.76 -45.05) (pol 7.81 -6.62 -50.72)) (L (pol 7.81 -6.52 -50.68) (pol 8.36 -17.31 -54.87)) (L (pol 8.37 -17.36 -55.24) (pol 9.52 -22.07 -55.99)) (L (pol 9.53 -22.22 -56.24) (pol 10.73 -19.68 -54.94)) (L (pol 10.71 -19.50 -55.30) (pol 11.56 -12.76 -52.42)) (L (pol 11.54 -12.67 -52.37) (pol 11.79 -4.96 -49.15)))(HJ (n raj1) (ax -95.05))(HJ (n raj2) (ax 0.54))(HJ (n raj3) (ax 118.78))(HJ (n raj4) (ax 83.31))(HJ (n laj1) (ax -86.32))(HJ (n laj2) (ax -7.16))(HJ (n laj3) (ax -20.98))(HJ (n laj4) (ax -83.27))(HJ (n rlj1) (ax 0.55))(HJ (n rlj2) (ax 18.67))(HJ (n rlj3) (ax -26.54))(HJ (n rlj4) (ax -101.31))(HJ (n rlj5) (ax -19.34))(HJ (n rlj6) (ax -27.06))(HJ (n llj1) (ax 0.34))(HJ (n llj2) (ax -21.49))(HJ (n llj3) (ax -27.72))(HJ (n llj4) (ax -104.43))(HJ (n llj5) (ax -18.12))(HJ (n llj6) (ax 19.01)) +{Tue 20:36:37 Step:727} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:729} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:739} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:741} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:741} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:743} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:745} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:748} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:751} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:753} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:753} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:756} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:759} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:763} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:766} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:38 Step:767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:771} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:774} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:38 Step:775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:777} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:780} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:38 Step:781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:783} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:785} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:787} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:790} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:39 Step:837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:839} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:840} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:841} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:863} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:40 Step:863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:869} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:40 Step:869} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:871} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:40 Step:871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:873} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:40 Step:873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:875} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:40 Step:875} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:877} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:921} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:923} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:926} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:41 Step:927} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:929} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:929} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:931} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:931} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:933} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:935} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:935} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:937} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:937} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:940} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:989} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:43 Step:991} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:993} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:993} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:995} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:995} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:997} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1000} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:43 Step:1003} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1005} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:1005} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1007} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:1007} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1009} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:1009} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1011} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:1011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1013} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:1013} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1015} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:1015} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1018} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:43 Step:1021} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1023} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1025} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1027} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1029} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:1029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1031} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1071} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1073} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1073} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1075} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1075} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1077} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1077} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1080} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:45 Step:1081} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1083} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1083} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1085} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1085} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1087} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1089} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1089} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1090} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1091} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1093} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1093} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1096} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:45 Step:1101} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1103} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1103} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1106} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:45 Step:1109} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1111} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1111} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1113} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1113} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1116} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:45 Step:1117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1118} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 657.20))(GS (sl 0) (sr 0) (t 281.74) (pm PlayOn))(foul 7)(GYR (n torso) (rt -20.09 56.68 -139.55))(ACC (n torso) (a -7.90 0.74 -3.30))(HJ (n hj1) (ax -53.09))(HJ (n hj2) (ax -39.03))(HJ (n raj1) (ax -89.63))(HJ (n raj2) (ax -13.58))(HJ (n raj3) (ax 76.66))(HJ (n raj4) (ax 80.23))(HJ (n laj1) (ax -89.63))(HJ (n laj2) (ax 2.96))(HJ (n laj3) (ax -75.74))(HJ (n laj4) (ax -80.79))(HJ (n rlj1) (ax -5.70))(HJ (n rlj2) (ax 21.02))(HJ (n rlj3) (ax 23.88))(HJ (n rlj4) (ax -121.07))(HJ (n rlj5) (ax 68.49))(HJ (n rlj6) (ax 19.14))(HJ (n llj1) (ax -4.89))(HJ (n llj2) (ax -18.56))(HJ (n llj3) (ax 99.77))(HJ (n llj4) (ax -121.03))(HJ (n llj5) (ax 68.40))(HJ (n llj6) (ax 6.50)) +{Tue 20:36:45 Step:1119} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1119} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1123} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1126} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:46 Step:1143} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:46 Step:1145} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1145} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1148} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:46 Step:1149} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1151} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1151} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1152} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1153} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1155} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1155} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1158} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:46 Step:1159} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1162} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1163} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1165} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1165} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1167} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1167} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1170} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1171} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1173} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1173} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1176} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1177} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1179} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1179} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1182} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1185} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1187} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1213} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1214} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1215} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1223} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1225} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:48 Step:1226} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:48 Step:1227} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1229} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1229} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1231} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1231} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1234} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:48 Step:1235} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1236} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:48 Step:1237} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1239} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1239} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1241} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1241} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1243} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1243} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1246} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:49 Step:1247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1249} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1249} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1251} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1251} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1253} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1256} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:49 Step:1257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1259} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1262} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:49 Step:1263} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1265} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1265} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1285} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1287} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1317} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1319} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1321} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1321} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1324} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:50 Step:1325} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 661.34))(GS (sl 0) (sr 0) (t 285.88) (pm PlayOn))(foul 7)(GYR (n torso) (rt 122.89 89.63 54.63))(ACC (n torso) (a 0.10 3.69 5.12))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.15 -25.03 -1.56)) (llowerarm (pol 0.16 33.07 -1.50))) (G2R (pol 24.64 -39.59 -37.17)) (G1R (pol 24.62 -33.89 -39.37)) (F1R (pol 26.43 -8.20 -46.21)) (mypos -9.61 0.38 0.23) (myorien 27.01) (ballpos -9.00 0.00 0.04) (L (pol 10.38 -60.07 -28.97) (pol 13.60 25.32 -44.54)) (L (pol 26.66 -59.91 -27.92) (pol 26.44 -8.21 -46.23)) (L (pol 26.42 -8.22 -46.31) (pol 9.92 59.86 -29.26)) (L (pol 22.96 -28.72 -43.01) (pol 23.08 -46.15 -36.43)) (L (pol 22.94 -28.73 -42.87) (pol 24.71 -29.25 -42.75)) (L (pol 23.05 -46.41 -36.19) (pol 24.87 -45.46 -36.76)) (L (pol 11.60 -39.26 -39.97) (pol 11.26 -31.85 -42.46)) (L (pol 11.25 -32.03 -42.45) (pol 10.34 -26.35 -44.28)) (L (pol 10.34 -26.47 -44.24) (pol 9.11 -25.00 -44.77)) (L (pol 9.11 -25.07 -44.86) (pol 8.02 -30.24 -43.57)) (L (pol 8.03 -30.43 -43.46) (pol 7.62 -40.92 -40.08)) (L (pol 7.62 -40.85 -40.10) (pol 8.14 -49.31 -35.84)) (L (pol 8.15 -49.54 -35.79) (pol 9.28 -52.63 -33.94)) (L (pol 9.28 -52.66 -33.62) (pol 10.47 -50.76 -34.58)) (L (pol 10.48 -50.88 -34.52) (pol 11.35 -46.01 -37.19)) (L (pol 11.34 -45.96 -37.16) (pol 11.61 -39.30 -39.98)))(HJ (n raj1) (ax 8.31))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 55.94))(HJ (n raj4) (ax 83.92))(HJ (n laj1) (ax 8.31))(HJ (n laj2) (ax 6.12))(HJ (n laj3) (ax -55.89))(HJ (n laj4) (ax -83.97))(HJ (n rlj1) (ax -31.20))(HJ (n rlj2) (ax 20.16))(HJ (n rlj3) (ax 13.58))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax 52.87))(HJ (n rlj6) (ax 47.21))(HJ (n llj1) (ax -30.56))(HJ (n llj2) (ax -23.23))(HJ (n llj3) (ax 16.88))(HJ (n llj4) (ax -6.31))(HJ (n llj5) (ax 52.95))(HJ (n llj6) (ax -47.25)) +{Tue 20:36:50 Step:1327} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1329} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1329} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1331} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1333} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1335} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:51 Step:1335} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1338} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:51 Step:1339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1341} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1343} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1345} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:51 Step:1345} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1347} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1409} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1415} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1417} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1419} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1419} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1421} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1421} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1423} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1425} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1427} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1427} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1429} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1429} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1431} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1431} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1433} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1433} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1435} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1435} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1437} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1437} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1441} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1441} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1443} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1443} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1446} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1447} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1448} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 663.81))(GS (sl 0) (sr 0) (t 288.34) (pm PlayOn))(foul 7)(GYR (n torso) (rt 70.02 43.83 112.06))(ACC (n torso) (a 0.65 -8.57 5.00))(HJ (n hj1) (ax -0.01))(HJ (n hj2) (ax 0.04))(HJ (n raj1) (ax -77.30))(HJ (n raj2) (ax 0.90))(HJ (n raj3) (ax -49.57))(HJ (n raj4) (ax 85.84))(HJ (n laj1) (ax -88.57))(HJ (n laj2) (ax 9.67))(HJ (n laj3) (ax 49.57))(HJ (n laj4) (ax -86.37))(HJ (n rlj1) (ax -65.09))(HJ (n rlj2) (ax 24.96))(HJ (n rlj3) (ax 99.69))(HJ (n rlj4) (ax 1.00))(HJ (n rlj5) (ax -42.56))(FRP (n rf) (c 0.03 -0.09 -0.01) (f -116.35 -47.92 36.48))(HJ (n rlj6) (ax 25.70))(HJ (n llj1) (ax -79.67))(HJ (n llj2) (ax -24.92))(HJ (n llj3) (ax 99.89))(HJ (n llj4) (ax -108.94))(HJ (n llj5) (ax -42.41))(FRP (n lf) (c -0.03 0.07 -0.01) (f 76.89 -69.01 -34.93))(HJ (n llj6) (ax -27.14)) +{Tue 20:36:53 Step:1449} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1449} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1452} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1457} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1460} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1463} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1466} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1469} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1471} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1473} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 664.31))(GS (sl 0) (sr 0) (t 288.84) (pm PlayOn))(foul 7)(GYR (n torso) (rt 287.39 -116.45 -20.59))(ACC (n torso) (a 10.74 -1.87 6.44))(HJ (n hj1) (ax -40.30))(HJ (n hj2) (ax -31.51))(See (P (team Gym) (id 1) (rlowerarm (pol 0.24 -10.52 -43.12)) (rfoot (pol 0.41 11.44 -26.10)) (lfoot (pol 0.37 39.71 -48.47))) (G2R (pol 24.75 26.36 -16.72)) (G1R (pol 24.71 31.60 -18.75)) (F1R (pol 26.40 50.49 -27.55)) (F2R (pol 26.83 8.27 -8.97)) (B (pol 0.86 -7.67 -13.12)) (mypos -9.69 0.47 0.23) (myorien -34.63) (ballpos -9.00 0.00 0.04) (L (pol 14.27 -12.84 3.42) (pol 11.17 59.96 -30.41)) (L (pol 26.82 8.29 -9.10) (pol 26.46 50.41 -27.50)) (L (pol 26.46 50.90 -27.42) (pol 19.25 60.01 -29.77)) (L (pol 26.81 8.32 -8.82) (pol 10.58 -59.77 25.35)) (L (pol 23.04 35.41 -22.59) (pol 23.16 21.19 -16.08)) (L (pol 23.00 35.16 -22.38) (pol 24.83 34.84 -22.11)) (L (pol 23.17 20.86 -16.25) (pol 24.92 21.69 -16.32)) (L (pol 11.72 26.48 -19.36) (pol 11.33 32.40 -21.96)) (L (pol 11.34 32.46 -22.00) (pol 10.41 36.61 -23.99)) (L (pol 10.40 36.49 -23.79) (pol 9.19 37.74 -24.26)) (L (pol 9.18 38.04 -24.35) (pol 8.11 33.39 -23.06)) (L (pol 8.11 33.21 -22.99) (pol 7.72 25.32 -19.26)) (L (pol 7.72 25.14 -19.41) (pol 8.23 17.94 -15.38)) (L (pol 8.25 17.97 -15.58) (pol 9.39 15.12 -13.98)) (L (pol 9.38 15.18 -13.60) (pol 10.58 16.46 -14.58)) (L (pol 10.59 16.56 -14.66) (pol 11.44 20.84 -16.66)) (L (pol 11.43 20.99 -16.71) (pol 11.69 26.71 -19.34)))(HJ (n raj1) (ax -103.23))(HJ (n raj2) (ax -3.76))(HJ (n raj3) (ax 55.27))(HJ (n raj4) (ax 79.89))(HJ (n laj1) (ax -53.51))(HJ (n laj2) (ax 44.67))(HJ (n laj3) (ax 84.51))(HJ (n laj4) (ax -86.75))(HJ (n rlj1) (ax -3.88))(HJ (n rlj2) (ax -44.96))(HJ (n rlj3) (ax 99.98))(HJ (n rlj4) (ax -90.78))(HJ (n rlj5) (ax 52.03))(HJ (n rlj6) (ax 47.11))(HJ (n llj1) (ax 2.96))(HJ (n llj2) (ax 51.17))(HJ (n llj3) (ax 100.02))(HJ (n llj4) (ax -132.75))(HJ (n llj5) (ax 74.90))(FRP (n lf) (c 0.04 -0.08 -0.01) (f -5.19 40.24 -91.14))(HJ (n llj6) (ax -51.61)) +{Tue 20:36:53 Step:1473} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1475} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1475} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1478} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:54 Step:1481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1505} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1507} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1559} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1561} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1564} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:56 Step:1567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1577} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:56 Step:1577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1581} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:56 Step:1581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1599} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:56 Step:1599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1602} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:57 Step:1653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1655} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1656} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:57 Step:1657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1661} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1673} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1687} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1691} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:58 Step:1691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1694} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:58 Step:1695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1697} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1699} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1699} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1701} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:58 Step:1701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:58 Step:1704} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:58 Step:1706} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 668.97))(GS (sl 0) (sr 0) (t 293.50) (pm PlayOn))(foul 7)(GYR (n torso) (rt 217.10 -114.15 81.44))(ACC (n torso) (a -3.16 10.74 -5.26))(HJ (n hj1) (ax 39.09))(HJ (n hj2) (ax -34.99))(HJ (n raj1) (ax -114.01))(HJ (n raj2) (ax -42.49))(HJ (n raj3) (ax 53.24))(HJ (n raj4) (ax 69.98))(HJ (n laj1) (ax -114.05))(HJ (n laj2) (ax 8.47))(HJ (n laj3) (ax -52.80))(HJ (n laj4) (ax -69.95))(HJ (n rlj1) (ax 0.31))(HJ (n rlj2) (ax -15.70))(HJ (n rlj3) (ax 33.42))(HJ (n rlj4) (ax -50.05))(HJ (n rlj5) (ax 0.98))(HJ (n rlj6) (ax 21.12))(HJ (n llj1) (ax -11.04))(HJ (n llj2) (ax -24.11))(HJ (n llj3) (ax 61.87))(HJ (n llj4) (ax -80.53))(HJ (n llj5) (ax 64.13))(HJ (n llj6) (ax -40.71)) +{Tue 20:36:59 Step:1709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1712} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:59 Step:1713} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1715} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1717} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1719} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1721} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1721} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1723} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:01 Step:1801} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1803} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:01 Step:1803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1816} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:01 Step:1817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1819} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:01 Step:1819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1822} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:01 Step:1822} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1823} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1825} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1827} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:01 Step:1827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1830} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:01 Step:1833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1837} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:01 Step:1837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1841} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:01 Step:1841} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1844} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:02 Step:1847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1849} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:02 Step:1851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1853} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:02 Step:1853} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1855} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:02 Step:1855} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1859} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:02 Step:1862} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 672.09))(GS (sl 0) (sr 0) (t 296.62) (pm PlayOn))(foul 7)(GYR (n torso) (rt 197.23 103.97 -104.36))(ACC (n torso) (a -15.28 -26.32 23.07))(HJ (n hj1) (ax -1.10))(HJ (n hj2) (ax -34.98))(HJ (n raj1) (ax -91.97))(HJ (n raj2) (ax -3.75))(HJ (n raj3) (ax 90.03))(HJ (n raj4) (ax 32.47))(HJ (n laj1) (ax -82.48))(HJ (n laj2) (ax 8.34))(HJ (n laj3) (ax -91.11))(HJ (n laj4) (ax -31.84))(HJ (n rlj1) (ax -30.32))(HJ (n rlj2) (ax -24.93))(HJ (n rlj3) (ax 78.15))(HJ (n rlj4) (ax -118.27))(HJ (n rlj5) (ax 22.88))(HJ (n rlj6) (ax 4.70))(HJ (n llj1) (ax -9.81))(HJ (n llj2) (ax 4.33))(HJ (n llj3) (ax 69.65))(HJ (n llj4) (ax -118.58))(HJ (n llj5) (ax 49.19))(HJ (n llj6) (ax 16.89)) +{Tue 20:37:02 Step:1877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1880} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1923} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:03 Step:1923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1925} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:1981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1983} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:1983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1986} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:04 Step:1987} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1990} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:1991} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:1995} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:1995} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:05 Step:1997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2000} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:2001} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2003} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2003} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2007} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:2007} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2008} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 675.02))(GS (sl 0) (sr 0) (t 299.53) (pm PlayOn))(foul 7)(GYR (n torso) (rt 249.91 -261.77 -181.14))(ACC (n torso) (a 0.01 2.32 3.55))(HJ (n hj1) (ax 77.11))(HJ (n hj2) (ax -48.89))(HJ (n raj1) (ax -103.43))(HJ (n raj2) (ax -4.02))(HJ (n raj3) (ax 52.24))(HJ (n raj4) (ax 39.67))(HJ (n laj1) (ax -102.21))(HJ (n laj2) (ax 2.42))(HJ (n laj3) (ax -52.46))(HJ (n laj4) (ax -39.41))(HJ (n rlj1) (ax -1.19))(HJ (n rlj2) (ax 25.33))(HJ (n rlj3) (ax -10.24))(HJ (n rlj4) (ax -61.77))(HJ (n rlj5) (ax 19.65))(FRP (n rf) (c -0.04 0.08 -0.02) (f 15.41 -36.19 -2.52))(HJ (n rlj6) (ax -23.17))(HJ (n llj1) (ax -17.54))(HJ (n llj2) (ax 17.02))(HJ (n llj3) (ax 48.74))(HJ (n llj4) (ax -103.42))(HJ (n llj5) (ax 10.63))(HJ (n llj6) (ax 25.54)) +{Tue 20:37:05 Step:2009} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2009} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2012} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:2013} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2015} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2015} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2017} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2021} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2021} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2025} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:2025} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2028} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:2029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2031} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2041} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2044} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:2045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2047} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2047} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2050} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:2051} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2053} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2101} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2103} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2103} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2105} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2105} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2107} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2107} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2109} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2109} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2111} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2111} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2113} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2113} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2116} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:07 Step:2117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2129} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2131} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:08 Step:2131} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2133} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2199} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2201} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2201} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2204} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:09 Step:2205} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2207} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2207} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2209} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2209} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2211} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2211} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2213} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2215} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2216} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2220} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2221} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2224} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2227} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2229} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:10 Step:2233} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2236} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2237} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2239} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:10 Step:2239} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2241} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:10 Step:2241} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2244} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2245} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2247} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:10 Step:2247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2249} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:10 Step:2249} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2251} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:10 Step:2251} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2254} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2255} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2258} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2295} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2297} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2297} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2321} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2323} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2323} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2326} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:12 Step:2327} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2329} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2329} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2332} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:12 Step:2333} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:12 Step:2335} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2335} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2337} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2337} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2339} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2341} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2341} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2343} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2343} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2345} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2345} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2355} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2357} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:13 Step:2357} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2359} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:13 Step:2359} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2362} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:13 Step:2371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2373} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:13 Step:2373} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2376} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2429} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2431} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2431} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2434} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2435} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2437} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2437} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2439} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2442} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2445} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:14 Step:2449} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2451} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:15 Step:2465} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2467} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:15 Step:2467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2470} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:16 Step:2539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2541} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2544} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2548} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2551} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:17 Step:2553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2564} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2567} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:17 Step:2567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2569} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:17 Step:2569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2572} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2572} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:17 Step:2587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2589} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:17 Step:2589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2591} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:18 Step:2591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2594} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2598} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2598} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2657} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2660} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2663} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2666} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2669} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2671} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2673} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2676} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2681} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2683} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2685} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2687} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2689} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2689} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2692} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2699} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2699} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2701} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2704} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2707} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2709} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2711} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2711} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2714} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2777} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2780} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2783} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2787} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2790} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2795} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2795} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2797} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2797} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2799} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2799} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2802} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2805} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2807} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2807} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2809} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2809} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2811} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2814} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:2815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2816} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:23 Step:2817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2821} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2821} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2824} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:2825} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2827} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2829} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2831} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2833} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2837} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:2837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2840} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:2841} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2844} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:24 Step:2873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:2963} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:2966} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:26 Step:2993} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:2995} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:2995} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:2997} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:2997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:2999} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:2999} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:3001} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:3001} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:3004} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:28 Step:3053} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3055} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3058} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:28 Step:3081} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3083} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3083} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3086} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:28 Step:3087} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3089} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3089} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3091} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3091} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3093} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3093} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3097} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:29 Step:3097} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3100} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:29 Step:3101} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3103} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3103} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3105} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3105} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3108} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:29 Step:3109} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3111} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3161} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3163} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3163} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3165} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3165} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3168} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:30 Step:3169} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3171} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3171} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3173} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3173} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3176} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:30 Step:3177} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3179} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3179} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3181} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3181} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3184} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:30 Step:3185} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3188} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:30 Step:3189} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3191} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3191} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3193} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3193} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3195} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3195} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3198} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:31 Step:3199} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3201} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3201} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3203} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3203} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3205} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3205} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3209} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:31 Step:3209} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3211} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3211} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3214} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:31 Step:3217} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:31 Step:3227} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3227} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3230} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:31 Step:3230} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:31 Step:3231} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3233} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3233} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3236} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3237} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3240} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3240} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:32 Step:3241} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3246} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3251} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3251} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3254} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3261} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:33 Step:3321} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3324} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:33 Step:3325} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3328} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:33 Step:3329} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3332} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:33 Step:3333} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3335} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:34 Step:3335} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3339} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3343} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3343} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3345} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:34 Step:3345} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3349} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3349} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3351} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:34 Step:3351} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3353} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:34 Step:3353} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3355} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:34 Step:3355} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3358} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3359} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3361} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3363} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:34 Step:3363} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3366} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3367} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3369} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:34 Step:3369} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3371} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:35 Step:3381} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3383} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:35 Step:3383} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3385} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:35 Step:3385} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3388} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3437} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3439} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3443} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3443} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3447} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3447} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3451} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3451} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3453} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3453} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3456} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3457} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3459} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3459} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3462} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3462} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:36 Step:3463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3465} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3465} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3468} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3471} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3473} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3477} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:37 Step:3477} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3479} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:37 Step:3479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3482} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:37 Step:3483} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3485} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:37 Step:3485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3492} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:37 Step:3493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3496} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:37 Step:3497} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3499} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:37 Step:3499} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3503} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3571} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3577} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3580} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3583} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3583} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3586} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3589} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3591} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3593} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3601} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3601} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3604} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3607} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3617} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3620} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3623} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3626} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3627} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3629} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3663} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3666} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:41 Step:3667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3669} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3673} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3696} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:41 Step:3697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3700} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3703} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3706} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3710} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3717} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3720} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3721} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3723} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3761} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3763} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3766} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3770} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3895} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3898} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3898} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3901} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:3901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3905} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3914} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3918} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3922} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3925} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:3925} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3928} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3929} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3932} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3935} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:47 Step:3935} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3937} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:47 Step:3937} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3940} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:3991} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:3993} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:48 Step:3993} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:3996} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:3997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4000} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:4001} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4004} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:4005} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4008} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:4009} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4011} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:48 Step:4011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:4014} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4015} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4017} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:49 Step:4017} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4021} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4023} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:49 Step:4023} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4025} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4028} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4031} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:49 Step:4031} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4034} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4035} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4037} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:49 Step:4037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4040} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4041} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4043} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:49 Step:4043} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4046} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4047} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4049} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:49 Step:4049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4052} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:4053} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:4056} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:51 Step:4119} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4121} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4121} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4124} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:51 Step:4125} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4127} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4131} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4133} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4135} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4135} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4137} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4137} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4139} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4139} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4141} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4141} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4143} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4143} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4146} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:52 Step:4149} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4151} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4151} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4153} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4153} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4155} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4155} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4157} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4157} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4159} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4165} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4167} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4173} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4175} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4223} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4225} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4225} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4227} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4230} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4231} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4233} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:54 Step:4233} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4237} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4237} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4240} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4243} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4245} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:54 Step:4245} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4248} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4249} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4252} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4255} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:54 Step:4255} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4258} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4258} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4262} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4263} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4267} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4267} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4270} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4271} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4273} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4273} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4275} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4275} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4278} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4289} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4292} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4293} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4296} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4343} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4347} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4347} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4350} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:57 Step:4351} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4354} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:57 Step:4355} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4357} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4357} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4360} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:57 Step:4361} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4363} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4363} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4366} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:57 Step:4366} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:57 Step:4367} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4368} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4369} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4372} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:57 Step:4373} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4375} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4379} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4381} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4381} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4384} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:57 Step:4385} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4387} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4397} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4399} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4399} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4402} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:58 Step:4433} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4435} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4435} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4439} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4442} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4443} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4446} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4447} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4450} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4451} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4455} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4459} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4459} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4462} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4465} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4465} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4469} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4471} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4474} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4524} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4528} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4532} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4535} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4538} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4543} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4543} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4545} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4548} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4551} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4553} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4555} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4558} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4613} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4617} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4619} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4622} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4625} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4629} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4629} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4631} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4631} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4634} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4635} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4637} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4637} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4640} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4644} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4645} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4648} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4651} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4653} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4655} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4659} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4662} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4662} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:04 Step:4663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4665} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4665} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4669} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4672} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4677} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4680} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4684} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4688} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4689} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4691} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4694} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4697} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4700} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4703} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4705} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4708} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4746} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4750} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4754} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4758} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4762} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4766} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4769} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:06 Step:4769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4773} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4773} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4823} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4825} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:08 Step:4825} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4829} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4829} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4833} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4836} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4840} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4841} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4843} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:08 Step:4843} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4846} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4851} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4855} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4858} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4859} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4862} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4866} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:4867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4870} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:4871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4873} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4876} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:4877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4879} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4879} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4881} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4881} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4884} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:4885} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4887} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4887} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4889} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4889} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4891} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4893} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4898} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:4899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4907} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:4907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4937} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4939} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:10 Step:4939} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4941} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:10 Step:4941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4943} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:10 Step:4943} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4946} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:4947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4949} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:4949} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4952} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:4953} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4956} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:4957} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4959} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:4959} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4961} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:4961} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4963} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:4963} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4965} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:4965} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4969} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:4969} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4972} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:4973} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4977} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:4977} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4979} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:4979} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4982} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:4985} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4987} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:4987} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4989} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:4989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4992} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:12 Step:4999} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5001} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5013} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:5013} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:5015} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:5043} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5045} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:5045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5047} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:5047} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5050} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:13 Step:5051} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5053} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:5053} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5055} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:5055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5058} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:13 Step:5059} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5061} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:5061} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5064} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:13 Step:5065} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5067} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5069} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:5069} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5071} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:5071} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5074} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:13 Step:5075} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:5078} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5079} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5082} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5083} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5086} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5087} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5089} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:14 Step:5089} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5093} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5095} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5097} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:14 Step:5097} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5100} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5103} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5105} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:14 Step:5105} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5108} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5109} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5112} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5113} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5116} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5161} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5163} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:15 Step:5163} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5166} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5167} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5169} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5169} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5172} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5173} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5175} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5175} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5178} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5181} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5183} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5183} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5187} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5187} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5191} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5191} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5194} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5195} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5198} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5199} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5201} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5201} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5204} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5205} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5207} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5207} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5210} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5211} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5213} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5213} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5215} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5215} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5218} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5219} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5222} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5227} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5229} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5229} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5232} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5233} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5235} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5235} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5238} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5275} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5277} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5277} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5279} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5279} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5281} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5281} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5283} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5283} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5285} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5285} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5287} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5287} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5290} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5291} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5293} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5303} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5307} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:19 Step:5307} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5310} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:19 Step:5311} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5314} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:19 Step:5315} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5317} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5317} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5319} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5319} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5323} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:19 Step:5323} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5326} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:19 Step:5327} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5330} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:19 Step:5331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5333} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5333} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5337} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:19 Step:5337} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5339} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5341} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5341} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5344} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:20 Step:5345} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5347} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5347} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5349} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5349} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5352} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:20 Step:5353} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5415} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5419} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5419} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5423} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5427} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5427} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5432} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5437} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5439} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5442} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5443} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5446} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5447} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5449} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5449} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5452} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5453} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5455} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5458} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5459} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5462} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5516} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5521} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5524} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5528} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5531} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:24 Step:5531} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5535} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5539} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:24 Step:5539} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:24 Step:5545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5547} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:24 Step:5547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5550} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5555} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:24 Step:5557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5558} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5562} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5565} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5568} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5571} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5574} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5577} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5579} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5581} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5584} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5587} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5589} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5592} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5595} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5597} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5599} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5603} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5607} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5616} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5619} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5621} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5624} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5627} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5627} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5631} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5631} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5634} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5635} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5638} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5643} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5643} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5646} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5649} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5652} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5655} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5657} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5660} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5663} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5667} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5670} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5674} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5677} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5680} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5683} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5685} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5688} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5689} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5693} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5695} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5698} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5699} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5702} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5705} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5707} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5710} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5711} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5713} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5713} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5715} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5717} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5721} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5721} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5725} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5729} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5732} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5733} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5735} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5738} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5739} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5741} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5741} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5744} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5747} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5749} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5754} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5757} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5761} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5764} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5767} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:5767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5771} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5774} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5779} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:5779} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5783} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5786} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5791} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5794} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5795} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5798} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5799} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5802} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5805} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:31 Step:5805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5809} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5809} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5812} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5815} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:31 Step:5815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5818} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5822} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5823} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5825} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:31 Step:5825} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5828} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5829} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5831} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:31 Step:5831} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5835} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5837} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:31 Step:5837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5839} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:31 Step:5839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5842} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5845} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5847} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:32 Step:5847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5850} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5854} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5855} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5857} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:32 Step:5857} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5860} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5863} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:32 Step:5863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5866} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5869} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:32 Step:5869} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5873} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5876} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5879} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:32 Step:5879} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5882} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5883} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5886} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:5887} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5890} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:5891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5894} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:5895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5897} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:33 Step:5897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5899} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:33 Step:5899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5902} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:5903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5905} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:33 Step:5905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5907} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:33 Step:5907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5909} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? diff --git a/logs/2025-11-04_20.36.23__SKQERR/Gym_1.log b/logs/2025-11-04_20.36.23__SKQERR/Gym_1.log new file mode 100644 index 0000000..e2ab11c --- /dev/null +++ b/logs/2025-11-04_20.36.23__SKQERR/Gym_1.log @@ -0,0 +1,2069 @@ +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 93, +Msg: (time (now 636.96))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.21 -18.28)) (llowerarm (pol 0.21 28.33 -18.57))) (G2R (pol 29.91 -12.84 0.44)) (G1R (pol 29.56 -9.06 0.33)) (F1R (pol 29.53 8.96 -0.95)) (F2R (pol 33.19 -28.27 -1.08)) (B (pol 15.29 -21.95 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.10 -47.76 -1.67) (pol 14.87 17.11 -2.01)) (L (pol 33.08 -28.20 -1.01) (pol 29.56 8.59 -1.08)) (L (pol 29.52 8.69 -1.12) (pol 5.12 59.81 -6.34)) (L (pol 33.09 -28.00 -0.94) (pol 18.03 -59.95 -1.93)) (L (pol 27.54 -5.56 -1.03) (pol 28.75 -17.21 -0.91)) (L (pol 27.54 -5.38 -1.28) (pol 29.29 -4.70 -1.08)) (L (pol 28.79 -17.63 -1.11) (pol 30.44 -16.52 -1.18)) (L (pol 17.17 -19.17 -1.78) (pol 16.45 -15.80 -1.98)) (L (pol 16.42 -16.04 -2.09) (pol 15.27 -14.16 -1.88)) (L (pol 15.28 -14.21 -2.02) (pol 14.08 -15.37 -2.16)) (L (pol 14.09 -15.06 -2.19) (pol 13.35 -19.49 -2.26)) (L (pol 13.34 -19.51 -2.31) (pol 13.44 -24.95 -2.29)) (L (pol 13.44 -24.82 -2.64) (pol 14.32 -28.27 -2.16)) (L (pol 14.29 -28.23 -2.42) (pol 15.57 -28.72 -2.00)) (L (pol 15.52 -29.05 -2.07) (pol 16.66 -26.86 -2.11)) (L (pol 16.61 -27.02 -2.05) (pol 17.20 -23.09 -1.86)) (L (pol 17.22 -23.37 -1.76) (pol 17.19 -19.18 -1.88)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 101, +Msg: (time (now 636.96))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.21 -18.28)) (llowerarm (pol 0.21 28.33 -18.57))) (G2R (pol 29.91 -12.84 0.44)) (G1R (pol 29.56 -9.06 0.33)) (F1R (pol 29.53 8.96 -0.95)) (F2R (pol 33.19 -28.27 -1.08)) (B (pol 15.29 -21.95 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.10 -47.76 -1.67) (pol 14.87 17.11 -2.01)) (L (pol 33.08 -28.20 -1.01) (pol 29.56 8.59 -1.08)) (L (pol 29.52 8.69 -1.12) (pol 5.12 59.81 -6.34)) (L (pol 33.09 -28.00 -0.94) (pol 18.03 -59.95 -1.93)) (L (pol 27.54 -5.56 -1.03) (pol 28.75 -17.21 -0.91)) (L (pol 27.54 -5.38 -1.28) (pol 29.29 -4.70 -1.08)) (L (pol 28.79 -17.63 -1.11) (pol 30.44 -16.52 -1.18)) (L (pol 17.17 -19.17 -1.78) (pol 16.45 -15.80 -1.98)) (L (pol 16.42 -16.04 -2.09) (pol 15.27 -14.16 -1.88)) (L (pol 15.28 -14.21 -2.02) (pol 14.08 -15.37 -2.16)) (L (pol 14.09 -15.06 -2.19) (pol 13.35 -19.49 -2.26)) (L (pol 13.34 -19.51 -2.31) (pol 13.44 -24.95 -2.29)) (L (pol 13.44 -24.82 -2.64) (pol 14.32 -28.27 -2.16)) (L (pol 14.29 -28.23 -2.42) (pol 15.57 -28.72 -2.00)) (L (pol 15.52 -29.05 -2.07) (pol 16.66 -26.86 -2.11)) (L (pol 16.61 -27.02 -2.05) (pol 17.20 -23.09 -1.86)) (L (pol 17.22 -23.37 -1.76) (pol 17.19 -19.18 -1.88)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 109, +Msg: (time (now 636.96))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.21 -18.28)) (llowerarm (pol 0.21 28.33 -18.57))) (G2R (pol 29.91 -12.84 0.44)) (G1R (pol 29.56 -9.06 0.33)) (F1R (pol 29.53 8.96 -0.95)) (F2R (pol 33.19 -28.27 -1.08)) (B (pol 15.29 -21.95 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.10 -47.76 -1.67) (pol 14.87 17.11 -2.01)) (L (pol 33.08 -28.20 -1.01) (pol 29.56 8.59 -1.08)) (L (pol 29.52 8.69 -1.12) (pol 5.12 59.81 -6.34)) (L (pol 33.09 -28.00 -0.94) (pol 18.03 -59.95 -1.93)) (L (pol 27.54 -5.56 -1.03) (pol 28.75 -17.21 -0.91)) (L (pol 27.54 -5.38 -1.28) (pol 29.29 -4.70 -1.08)) (L (pol 28.79 -17.63 -1.11) (pol 30.44 -16.52 -1.18)) (L (pol 17.17 -19.17 -1.78) (pol 16.45 -15.80 -1.98)) (L (pol 16.42 -16.04 -2.09) (pol 15.27 -14.16 -1.88)) (L (pol 15.28 -14.21 -2.02) (pol 14.08 -15.37 -2.16)) (L (pol 14.09 -15.06 -2.19) (pol 13.35 -19.49 -2.26)) (L (pol 13.34 -19.51 -2.31) (pol 13.44 -24.95 -2.29)) (L (pol 13.44 -24.82 -2.64) (pol 14.32 -28.27 -2.16)) (L (pol 14.29 -28.23 -2.42) (pol 15.57 -28.72 -2.00)) (L (pol 15.52 -29.05 -2.07) (pol 16.66 -26.86 -2.11)) (L (pol 16.61 -27.02 -2.05) (pol 17.20 -23.09 -1.86)) (L (pol 17.22 -23.37 -1.76) (pol 17.19 -19.18 -1.88)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 117, +Msg: (time (now 636.96))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.21 -18.28)) (llowerarm (pol 0.21 28.33 -18.57))) (G2R (pol 29.91 -12.84 0.44)) (G1R (pol 29.56 -9.06 0.33)) (F1R (pol 29.53 8.96 -0.95)) (F2R (pol 33.19 -28.27 -1.08)) (B (pol 15.29 -21.95 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.10 -47.76 -1.67) (pol 14.87 17.11 -2.01)) (L (pol 33.08 -28.20 -1.01) (pol 29.56 8.59 -1.08)) (L (pol 29.52 8.69 -1.12) (pol 5.12 59.81 -6.34)) (L (pol 33.09 -28.00 -0.94) (pol 18.03 -59.95 -1.93)) (L (pol 27.54 -5.56 -1.03) (pol 28.75 -17.21 -0.91)) (L (pol 27.54 -5.38 -1.28) (pol 29.29 -4.70 -1.08)) (L (pol 28.79 -17.63 -1.11) (pol 30.44 -16.52 -1.18)) (L (pol 17.17 -19.17 -1.78) (pol 16.45 -15.80 -1.98)) (L (pol 16.42 -16.04 -2.09) (pol 15.27 -14.16 -1.88)) (L (pol 15.28 -14.21 -2.02) (pol 14.08 -15.37 -2.16)) (L (pol 14.09 -15.06 -2.19) (pol 13.35 -19.49 -2.26)) (L (pol 13.34 -19.51 -2.31) (pol 13.44 -24.95 -2.29)) (L (pol 13.44 -24.82 -2.64) (pol 14.32 -28.27 -2.16)) (L (pol 14.29 -28.23 -2.42) (pol 15.57 -28.72 -2.00)) (L (pol 15.52 -29.05 -2.07) (pol 16.66 -26.86 -2.11)) (L (pol 16.61 -27.02 -2.05) (pol 17.20 -23.09 -1.86)) (L (pol 17.22 -23.37 -1.76) (pol 17.19 -19.18 -1.88)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 125, +Msg: (time (now 636.96))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.21 -18.28)) (llowerarm (pol 0.21 28.33 -18.57))) (G2R (pol 29.91 -12.84 0.44)) (G1R (pol 29.56 -9.06 0.33)) (F1R (pol 29.53 8.96 -0.95)) (F2R (pol 33.19 -28.27 -1.08)) (B (pol 15.29 -21.95 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.10 -47.76 -1.67) (pol 14.87 17.11 -2.01)) (L (pol 33.08 -28.20 -1.01) (pol 29.56 8.59 -1.08)) (L (pol 29.52 8.69 -1.12) (pol 5.12 59.81 -6.34)) (L (pol 33.09 -28.00 -0.94) (pol 18.03 -59.95 -1.93)) (L (pol 27.54 -5.56 -1.03) (pol 28.75 -17.21 -0.91)) (L (pol 27.54 -5.38 -1.28) (pol 29.29 -4.70 -1.08)) (L (pol 28.79 -17.63 -1.11) (pol 30.44 -16.52 -1.18)) (L (pol 17.17 -19.17 -1.78) (pol 16.45 -15.80 -1.98)) (L (pol 16.42 -16.04 -2.09) (pol 15.27 -14.16 -1.88)) (L (pol 15.28 -14.21 -2.02) (pol 14.08 -15.37 -2.16)) (L (pol 14.09 -15.06 -2.19) (pol 13.35 -19.49 -2.26)) (L (pol 13.34 -19.51 -2.31) (pol 13.44 -24.95 -2.29)) (L (pol 13.44 -24.82 -2.64) (pol 14.32 -28.27 -2.16)) (L (pol 14.29 -28.23 -2.42) (pol 15.57 -28.72 -2.00)) (L (pol 15.52 -29.05 -2.07) (pol 16.66 -26.86 -2.11)) (L (pol 16.61 -27.02 -2.05) (pol 17.20 -23.09 -1.86)) (L (pol 17.22 -23.37 -1.76) (pol 17.19 -19.18 -1.88)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 133, +Msg: (time (now 636.96))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.21 -18.28)) (llowerarm (pol 0.21 28.33 -18.57))) (G2R (pol 29.91 -12.84 0.44)) (G1R (pol 29.56 -9.06 0.33)) (F1R (pol 29.53 8.96 -0.95)) (F2R (pol 33.19 -28.27 -1.08)) (B (pol 15.29 -21.95 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.10 -47.76 -1.67) (pol 14.87 17.11 -2.01)) (L (pol 33.08 -28.20 -1.01) (pol 29.56 8.59 -1.08)) (L (pol 29.52 8.69 -1.12) (pol 5.12 59.81 -6.34)) (L (pol 33.09 -28.00 -0.94) (pol 18.03 -59.95 -1.93)) (L (pol 27.54 -5.56 -1.03) (pol 28.75 -17.21 -0.91)) (L (pol 27.54 -5.38 -1.28) (pol 29.29 -4.70 -1.08)) (L (pol 28.79 -17.63 -1.11) (pol 30.44 -16.52 -1.18)) (L (pol 17.17 -19.17 -1.78) (pol 16.45 -15.80 -1.98)) (L (pol 16.42 -16.04 -2.09) (pol 15.27 -14.16 -1.88)) (L (pol 15.28 -14.21 -2.02) (pol 14.08 -15.37 -2.16)) (L (pol 14.09 -15.06 -2.19) (pol 13.35 -19.49 -2.26)) (L (pol 13.34 -19.51 -2.31) (pol 13.44 -24.95 -2.29)) (L (pol 13.44 -24.82 -2.64) (pol 14.32 -28.27 -2.16)) (L (pol 14.29 -28.23 -2.42) (pol 15.57 -28.72 -2.00)) (L (pol 15.52 -29.05 -2.07) (pol 16.66 -26.86 -2.11)) (L (pol 16.61 -27.02 -2.05) (pol 17.20 -23.09 -1.86)) (L (pol 17.22 -23.37 -1.76) (pol 17.19 -19.18 -1.88)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 141, +Msg: (time (now 636.96))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.21 -18.28)) (llowerarm (pol 0.21 28.33 -18.57))) (G2R (pol 29.91 -12.84 0.44)) (G1R (pol 29.56 -9.06 0.33)) (F1R (pol 29.53 8.96 -0.95)) (F2R (pol 33.19 -28.27 -1.08)) (B (pol 15.29 -21.95 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.10 -47.76 -1.67) (pol 14.87 17.11 -2.01)) (L (pol 33.08 -28.20 -1.01) (pol 29.56 8.59 -1.08)) (L (pol 29.52 8.69 -1.12) (pol 5.12 59.81 -6.34)) (L (pol 33.09 -28.00 -0.94) (pol 18.03 -59.95 -1.93)) (L (pol 27.54 -5.56 -1.03) (pol 28.75 -17.21 -0.91)) (L (pol 27.54 -5.38 -1.28) (pol 29.29 -4.70 -1.08)) (L (pol 28.79 -17.63 -1.11) (pol 30.44 -16.52 -1.18)) (L (pol 17.17 -19.17 -1.78) (pol 16.45 -15.80 -1.98)) (L (pol 16.42 -16.04 -2.09) (pol 15.27 -14.16 -1.88)) (L (pol 15.28 -14.21 -2.02) (pol 14.08 -15.37 -2.16)) (L (pol 14.09 -15.06 -2.19) (pol 13.35 -19.49 -2.26)) (L (pol 13.34 -19.51 -2.31) (pol 13.44 -24.95 -2.29)) (L (pol 13.44 -24.82 -2.64) (pol 14.32 -28.27 -2.16)) (L (pol 14.29 -28.23 -2.42) (pol 15.57 -28.72 -2.00)) (L (pol 15.52 -29.05 -2.07) (pol 16.66 -26.86 -2.11)) (L (pol 16.61 -27.02 -2.05) (pol 17.20 -23.09 -1.86)) (L (pol 17.22 -23.37 -1.76) (pol 17.19 -19.18 -1.88)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 149, +Msg: (time (now 636.96))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.21 -18.28)) (llowerarm (pol 0.21 28.33 -18.57))) (G2R (pol 29.91 -12.84 0.44)) (G1R (pol 29.56 -9.06 0.33)) (F1R (pol 29.53 8.96 -0.95)) (F2R (pol 33.19 -28.27 -1.08)) (B (pol 15.29 -21.95 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.10 -47.76 -1.67) (pol 14.87 17.11 -2.01)) (L (pol 33.08 -28.20 -1.01) (pol 29.56 8.59 -1.08)) (L (pol 29.52 8.69 -1.12) (pol 5.12 59.81 -6.34)) (L (pol 33.09 -28.00 -0.94) (pol 18.03 -59.95 -1.93)) (L (pol 27.54 -5.56 -1.03) (pol 28.75 -17.21 -0.91)) (L (pol 27.54 -5.38 -1.28) (pol 29.29 -4.70 -1.08)) (L (pol 28.79 -17.63 -1.11) (pol 30.44 -16.52 -1.18)) (L (pol 17.17 -19.17 -1.78) (pol 16.45 -15.80 -1.98)) (L (pol 16.42 -16.04 -2.09) (pol 15.27 -14.16 -1.88)) (L (pol 15.28 -14.21 -2.02) (pol 14.08 -15.37 -2.16)) (L (pol 14.09 -15.06 -2.19) (pol 13.35 -19.49 -2.26)) (L (pol 13.34 -19.51 -2.31) (pol 13.44 -24.95 -2.29)) (L (pol 13.44 -24.82 -2.64) (pol 14.32 -28.27 -2.16)) (L (pol 14.29 -28.23 -2.42) (pol 15.57 -28.72 -2.00)) (L (pol 15.52 -29.05 -2.07) (pol 16.66 -26.86 -2.11)) (L (pol 16.61 -27.02 -2.05) (pol 17.20 -23.09 -1.86)) (L (pol 17.22 -23.37 -1.76) (pol 17.19 -19.18 -1.88)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 157, +Msg: (time (now 636.96))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.21 -18.28)) (llowerarm (pol 0.21 28.33 -18.57))) (G2R (pol 29.91 -12.84 0.44)) (G1R (pol 29.56 -9.06 0.33)) (F1R (pol 29.53 8.96 -0.95)) (F2R (pol 33.19 -28.27 -1.08)) (B (pol 15.29 -21.95 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.10 -47.76 -1.67) (pol 14.87 17.11 -2.01)) (L (pol 33.08 -28.20 -1.01) (pol 29.56 8.59 -1.08)) (L (pol 29.52 8.69 -1.12) (pol 5.12 59.81 -6.34)) (L (pol 33.09 -28.00 -0.94) (pol 18.03 -59.95 -1.93)) (L (pol 27.54 -5.56 -1.03) (pol 28.75 -17.21 -0.91)) (L (pol 27.54 -5.38 -1.28) (pol 29.29 -4.70 -1.08)) (L (pol 28.79 -17.63 -1.11) (pol 30.44 -16.52 -1.18)) (L (pol 17.17 -19.17 -1.78) (pol 16.45 -15.80 -1.98)) (L (pol 16.42 -16.04 -2.09) (pol 15.27 -14.16 -1.88)) (L (pol 15.28 -14.21 -2.02) (pol 14.08 -15.37 -2.16)) (L (pol 14.09 -15.06 -2.19) (pol 13.35 -19.49 -2.26)) (L (pol 13.34 -19.51 -2.31) (pol 13.44 -24.95 -2.29)) (L (pol 13.44 -24.82 -2.64) (pol 14.32 -28.27 -2.16)) (L (pol 14.29 -28.23 -2.42) (pol 15.57 -28.72 -2.00)) (L (pol 15.52 -29.05 -2.07) (pol 16.66 -26.86 -2.11)) (L (pol 16.61 -27.02 -2.05) (pol 17.20 -23.09 -1.86)) (L (pol 17.22 -23.37 -1.76) (pol 17.19 -19.18 -1.88)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 165, +Msg: (time (now 636.96))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.21 -18.28)) (llowerarm (pol 0.21 28.33 -18.57))) (G2R (pol 29.91 -12.84 0.44)) (G1R (pol 29.56 -9.06 0.33)) (F1R (pol 29.53 8.96 -0.95)) (F2R (pol 33.19 -28.27 -1.08)) (B (pol 15.29 -21.95 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.10 -47.76 -1.67) (pol 14.87 17.11 -2.01)) (L (pol 33.08 -28.20 -1.01) (pol 29.56 8.59 -1.08)) (L (pol 29.52 8.69 -1.12) (pol 5.12 59.81 -6.34)) (L (pol 33.09 -28.00 -0.94) (pol 18.03 -59.95 -1.93)) (L (pol 27.54 -5.56 -1.03) (pol 28.75 -17.21 -0.91)) (L (pol 27.54 -5.38 -1.28) (pol 29.29 -4.70 -1.08)) (L (pol 28.79 -17.63 -1.11) (pol 30.44 -16.52 -1.18)) (L (pol 17.17 -19.17 -1.78) (pol 16.45 -15.80 -1.98)) (L (pol 16.42 -16.04 -2.09) (pol 15.27 -14.16 -1.88)) (L (pol 15.28 -14.21 -2.02) (pol 14.08 -15.37 -2.16)) (L (pol 14.09 -15.06 -2.19) (pol 13.35 -19.49 -2.26)) (L (pol 13.34 -19.51 -2.31) (pol 13.44 -24.95 -2.29)) (L (pol 13.44 -24.82 -2.64) (pol 14.32 -28.27 -2.16)) (L (pol 14.29 -28.23 -2.42) (pol 15.57 -28.72 -2.00)) (L (pol 15.52 -29.05 -2.07) (pol 16.66 -26.86 -2.11)) (L (pol 16.61 -27.02 -2.05) (pol 17.20 -23.09 -1.86)) (L (pol 17.22 -23.37 -1.76) (pol 17.19 -19.18 -1.88)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 173, +Msg: (time (now 636.96))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.21 -18.28)) (llowerarm (pol 0.21 28.33 -18.57))) (G2R (pol 29.91 -12.84 0.44)) (G1R (pol 29.56 -9.06 0.33)) (F1R (pol 29.53 8.96 -0.95)) (F2R (pol 33.19 -28.27 -1.08)) (B (pol 15.29 -21.95 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.10 -47.76 -1.67) (pol 14.87 17.11 -2.01)) (L (pol 33.08 -28.20 -1.01) (pol 29.56 8.59 -1.08)) (L (pol 29.52 8.69 -1.12) (pol 5.12 59.81 -6.34)) (L (pol 33.09 -28.00 -0.94) (pol 18.03 -59.95 -1.93)) (L (pol 27.54 -5.56 -1.03) (pol 28.75 -17.21 -0.91)) (L (pol 27.54 -5.38 -1.28) (pol 29.29 -4.70 -1.08)) (L (pol 28.79 -17.63 -1.11) (pol 30.44 -16.52 -1.18)) (L (pol 17.17 -19.17 -1.78) (pol 16.45 -15.80 -1.98)) (L (pol 16.42 -16.04 -2.09) (pol 15.27 -14.16 -1.88)) (L (pol 15.28 -14.21 -2.02) (pol 14.08 -15.37 -2.16)) (L (pol 14.09 -15.06 -2.19) (pol 13.35 -19.49 -2.26)) (L (pol 13.34 -19.51 -2.31) (pol 13.44 -24.95 -2.29)) (L (pol 13.44 -24.82 -2.64) (pol 14.32 -28.27 -2.16)) (L (pol 14.29 -28.23 -2.42) (pol 15.57 -28.72 -2.00)) (L (pol 15.52 -29.05 -2.07) (pol 16.66 -26.86 -2.11)) (L (pol 16.61 -27.02 -2.05) (pol 17.20 -23.09 -1.86)) (L (pol 17.22 -23.37 -1.76) (pol 17.19 -19.18 -1.88)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 181, +Msg: (time (now 636.96))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.21 -18.28)) (llowerarm (pol 0.21 28.33 -18.57))) (G2R (pol 29.91 -12.84 0.44)) (G1R (pol 29.56 -9.06 0.33)) (F1R (pol 29.53 8.96 -0.95)) (F2R (pol 33.19 -28.27 -1.08)) (B (pol 15.29 -21.95 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.10 -47.76 -1.67) (pol 14.87 17.11 -2.01)) (L (pol 33.08 -28.20 -1.01) (pol 29.56 8.59 -1.08)) (L (pol 29.52 8.69 -1.12) (pol 5.12 59.81 -6.34)) (L (pol 33.09 -28.00 -0.94) (pol 18.03 -59.95 -1.93)) (L (pol 27.54 -5.56 -1.03) (pol 28.75 -17.21 -0.91)) (L (pol 27.54 -5.38 -1.28) (pol 29.29 -4.70 -1.08)) (L (pol 28.79 -17.63 -1.11) (pol 30.44 -16.52 -1.18)) (L (pol 17.17 -19.17 -1.78) (pol 16.45 -15.80 -1.98)) (L (pol 16.42 -16.04 -2.09) (pol 15.27 -14.16 -1.88)) (L (pol 15.28 -14.21 -2.02) (pol 14.08 -15.37 -2.16)) (L (pol 14.09 -15.06 -2.19) (pol 13.35 -19.49 -2.26)) (L (pol 13.34 -19.51 -2.31) (pol 13.44 -24.95 -2.29)) (L (pol 13.44 -24.82 -2.64) (pol 14.32 -28.27 -2.16)) (L (pol 14.29 -28.23 -2.42) (pol 15.57 -28.72 -2.00)) (L (pol 15.52 -29.05 -2.07) (pol 16.66 -26.86 -2.11)) (L (pol 16.61 -27.02 -2.05) (pol 17.20 -23.09 -1.86)) (L (pol 17.22 -23.37 -1.76) (pol 17.19 -19.18 -1.88)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 189, +Msg: (time (now 636.96))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.21 -18.28)) (llowerarm (pol 0.21 28.33 -18.57))) (G2R (pol 29.91 -12.84 0.44)) (G1R (pol 29.56 -9.06 0.33)) (F1R (pol 29.53 8.96 -0.95)) (F2R (pol 33.19 -28.27 -1.08)) (B (pol 15.29 -21.95 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.10 -47.76 -1.67) (pol 14.87 17.11 -2.01)) (L (pol 33.08 -28.20 -1.01) (pol 29.56 8.59 -1.08)) (L (pol 29.52 8.69 -1.12) (pol 5.12 59.81 -6.34)) (L (pol 33.09 -28.00 -0.94) (pol 18.03 -59.95 -1.93)) (L (pol 27.54 -5.56 -1.03) (pol 28.75 -17.21 -0.91)) (L (pol 27.54 -5.38 -1.28) (pol 29.29 -4.70 -1.08)) (L (pol 28.79 -17.63 -1.11) (pol 30.44 -16.52 -1.18)) (L (pol 17.17 -19.17 -1.78) (pol 16.45 -15.80 -1.98)) (L (pol 16.42 -16.04 -2.09) (pol 15.27 -14.16 -1.88)) (L (pol 15.28 -14.21 -2.02) (pol 14.08 -15.37 -2.16)) (L (pol 14.09 -15.06 -2.19) (pol 13.35 -19.49 -2.26)) (L (pol 13.34 -19.51 -2.31) (pol 13.44 -24.95 -2.29)) (L (pol 13.44 -24.82 -2.64) (pol 14.32 -28.27 -2.16)) (L (pol 14.29 -28.23 -2.42) (pol 15.57 -28.72 -2.00)) (L (pol 15.52 -29.05 -2.07) (pol 16.66 -26.86 -2.11)) (L (pol 16.61 -27.02 -2.05) (pol 17.20 -23.09 -1.86)) (L (pol 17.22 -23.37 -1.76) (pol 17.19 -19.18 -1.88)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 197, +Msg: (time (now 636.96))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.21 -18.28)) (llowerarm (pol 0.21 28.33 -18.57))) (G2R (pol 29.91 -12.84 0.44)) (G1R (pol 29.56 -9.06 0.33)) (F1R (pol 29.53 8.96 -0.95)) (F2R (pol 33.19 -28.27 -1.08)) (B (pol 15.29 -21.95 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.10 -47.76 -1.67) (pol 14.87 17.11 -2.01)) (L (pol 33.08 -28.20 -1.01) (pol 29.56 8.59 -1.08)) (L (pol 29.52 8.69 -1.12) (pol 5.12 59.81 -6.34)) (L (pol 33.09 -28.00 -0.94) (pol 18.03 -59.95 -1.93)) (L (pol 27.54 -5.56 -1.03) (pol 28.75 -17.21 -0.91)) (L (pol 27.54 -5.38 -1.28) (pol 29.29 -4.70 -1.08)) (L (pol 28.79 -17.63 -1.11) (pol 30.44 -16.52 -1.18)) (L (pol 17.17 -19.17 -1.78) (pol 16.45 -15.80 -1.98)) (L (pol 16.42 -16.04 -2.09) (pol 15.27 -14.16 -1.88)) (L (pol 15.28 -14.21 -2.02) (pol 14.08 -15.37 -2.16)) (L (pol 14.09 -15.06 -2.19) (pol 13.35 -19.49 -2.26)) (L (pol 13.34 -19.51 -2.31) (pol 13.44 -24.95 -2.29)) (L (pol 13.44 -24.82 -2.64) (pol 14.32 -28.27 -2.16)) (L (pol 14.29 -28.23 -2.42) (pol 15.57 -28.72 -2.00)) (L (pol 15.52 -29.05 -2.07) (pol 16.66 -26.86 -2.11)) (L (pol 16.61 -27.02 -2.05) (pol 17.20 -23.09 -1.86)) (L (pol 17.22 -23.37 -1.76) (pol 17.19 -19.18 -1.88)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 205, +Msg: (time (now 636.96))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.21 -18.28)) (llowerarm (pol 0.21 28.33 -18.57))) (G2R (pol 29.91 -12.84 0.44)) (G1R (pol 29.56 -9.06 0.33)) (F1R (pol 29.53 8.96 -0.95)) (F2R (pol 33.19 -28.27 -1.08)) (B (pol 15.29 -21.95 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.10 -47.76 -1.67) (pol 14.87 17.11 -2.01)) (L (pol 33.08 -28.20 -1.01) (pol 29.56 8.59 -1.08)) (L (pol 29.52 8.69 -1.12) (pol 5.12 59.81 -6.34)) (L (pol 33.09 -28.00 -0.94) (pol 18.03 -59.95 -1.93)) (L (pol 27.54 -5.56 -1.03) (pol 28.75 -17.21 -0.91)) (L (pol 27.54 -5.38 -1.28) (pol 29.29 -4.70 -1.08)) (L (pol 28.79 -17.63 -1.11) (pol 30.44 -16.52 -1.18)) (L (pol 17.17 -19.17 -1.78) (pol 16.45 -15.80 -1.98)) (L (pol 16.42 -16.04 -2.09) (pol 15.27 -14.16 -1.88)) (L (pol 15.28 -14.21 -2.02) (pol 14.08 -15.37 -2.16)) (L (pol 14.09 -15.06 -2.19) (pol 13.35 -19.49 -2.26)) (L (pol 13.34 -19.51 -2.31) (pol 13.44 -24.95 -2.29)) (L (pol 13.44 -24.82 -2.64) (pol 14.32 -28.27 -2.16)) (L (pol 14.29 -28.23 -2.42) (pol 15.57 -28.72 -2.00)) (L (pol 15.52 -29.05 -2.07) (pol 16.66 -26.86 -2.11)) (L (pol 16.61 -27.02 -2.05) (pol 17.20 -23.09 -1.86)) (L (pol 17.22 -23.37 -1.76) (pol 17.19 -19.18 -1.88)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 213, +Msg: (time (now 636.96))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.21 -18.28)) (llowerarm (pol 0.21 28.33 -18.57))) (G2R (pol 29.91 -12.84 0.44)) (G1R (pol 29.56 -9.06 0.33)) (F1R (pol 29.53 8.96 -0.95)) (F2R (pol 33.19 -28.27 -1.08)) (B (pol 15.29 -21.95 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.10 -47.76 -1.67) (pol 14.87 17.11 -2.01)) (L (pol 33.08 -28.20 -1.01) (pol 29.56 8.59 -1.08)) (L (pol 29.52 8.69 -1.12) (pol 5.12 59.81 -6.34)) (L (pol 33.09 -28.00 -0.94) (pol 18.03 -59.95 -1.93)) (L (pol 27.54 -5.56 -1.03) (pol 28.75 -17.21 -0.91)) (L (pol 27.54 -5.38 -1.28) (pol 29.29 -4.70 -1.08)) (L (pol 28.79 -17.63 -1.11) (pol 30.44 -16.52 -1.18)) (L (pol 17.17 -19.17 -1.78) (pol 16.45 -15.80 -1.98)) (L (pol 16.42 -16.04 -2.09) (pol 15.27 -14.16 -1.88)) (L (pol 15.28 -14.21 -2.02) (pol 14.08 -15.37 -2.16)) (L (pol 14.09 -15.06 -2.19) (pol 13.35 -19.49 -2.26)) (L (pol 13.34 -19.51 -2.31) (pol 13.44 -24.95 -2.29)) (L (pol 13.44 -24.82 -2.64) (pol 14.32 -28.27 -2.16)) (L (pol 14.29 -28.23 -2.42) (pol 15.57 -28.72 -2.00)) (L (pol 15.52 -29.05 -2.07) (pol 16.66 -26.86 -2.11)) (L (pol 16.61 -27.02 -2.05) (pol 17.20 -23.09 -1.86)) (L (pol 17.22 -23.37 -1.76) (pol 17.19 -19.18 -1.88)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 221, +Msg: (time (now 636.96))(GS (unum 1) (team left) (sl 0) (sr 0) (t 300.01) (pm BeforeKickOff))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a -0.00 -0.00 19.62))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.21 -29.21 -18.28)) (llowerarm (pol 0.21 28.33 -18.57))) (G2R (pol 29.91 -12.84 0.44)) (G1R (pol 29.56 -9.06 0.33)) (F1R (pol 29.53 8.96 -0.95)) (F2R (pol 33.19 -28.27 -1.08)) (B (pol 15.29 -21.95 -1.94)) (mypos -14.20 5.60 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 21.10 -47.76 -1.67) (pol 14.87 17.11 -2.01)) (L (pol 33.08 -28.20 -1.01) (pol 29.56 8.59 -1.08)) (L (pol 29.52 8.69 -1.12) (pol 5.12 59.81 -6.34)) (L (pol 33.09 -28.00 -0.94) (pol 18.03 -59.95 -1.93)) (L (pol 27.54 -5.56 -1.03) (pol 28.75 -17.21 -0.91)) (L (pol 27.54 -5.38 -1.28) (pol 29.29 -4.70 -1.08)) (L (pol 28.79 -17.63 -1.11) (pol 30.44 -16.52 -1.18)) (L (pol 17.17 -19.17 -1.78) (pol 16.45 -15.80 -1.98)) (L (pol 16.42 -16.04 -2.09) (pol 15.27 -14.16 -1.88)) (L (pol 15.28 -14.21 -2.02) (pol 14.08 -15.37 -2.16)) (L (pol 14.09 -15.06 -2.19) (pol 13.35 -19.49 -2.26)) (L (pol 13.34 -19.51 -2.31) (pol 13.44 -24.95 -2.29)) (L (pol 13.44 -24.82 -2.64) (pol 14.32 -28.27 -2.16)) (L (pol 14.29 -28.23 -2.42) (pol 15.57 -28.72 -2.00)) (L (pol 15.52 -29.05 -2.07) (pol 16.66 -26.86 -2.11)) (L (pol 16.61 -27.02 -2.05) (pol 17.20 -23.09 -1.86)) (L (pol 17.22 -23.37 -1.76) (pol 17.19 -19.18 -1.88)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax -0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(HJ (n laj4) (ax 0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.67))(HJ (n rlj6) (ax -0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c 0.00 -0.00 -0.02) (f 0.00 -0.04 69.67))(HJ (n llj6) (ax 0.00)) +{Tue 20:36:23 Step:3} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:23 Step:5} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:23 Step:5} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:23 Step:7} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:23 Step:7} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:23 Step:9} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:23 Step:9} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:23 Step:11} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:23 Step:11} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:23 Step:13} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:23 Step:13} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:23 Step:15} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:23 Step:15} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:23 Step:17} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:23 Step:17} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:23 Step:20} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:23 Step:21} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:23 Step:23} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:23 Step:23} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:23 Step:26} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:23 Step:27} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:23 Step:29} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:23 Step:29} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:30} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:32 Step:466} Server_Comm.py: The agent lost 435 consecutive packets! Is syncmode disabled? +{Tue 20:36:32 Step:466} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:471} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:32 Step:471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:473} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:32 Step:473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:475} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:32 Step:475} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:478} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:32 Step:479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:482} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:32 Step:483} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:485} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:32 Step:485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:488} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:491} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:494} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:497} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:497} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:500} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:501} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:503} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:503} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:505} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:505} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:507} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:507} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:509} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:512} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:515} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:518} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:525} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:527} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:527} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:530} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:531} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:533} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:535} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:538} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:541} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:548} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:553} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:555} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:558} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:563} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:567} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:570} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:573} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:577} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:579} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:582} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:583} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:585} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:588} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:592} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:596} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:599} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:603} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:606} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:607} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:610} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:610} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:614} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:618} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:621} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:625} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:628} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:36 Step:629} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:631} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:36 Step:669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:671} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:36 Step:671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:673} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:676} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:676} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:37 Step:677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:679} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:682} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:687} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:690} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:693} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:695} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:698} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:705} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:708} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:712} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:713} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:715} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:717} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:719} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:722} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:38 Step:722} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:723} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:725} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:725} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:726} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 651.43))(GS (sl 0) (sr 0) (t 313.83) (pm PlayOn))(foul 7)(GYR (n torso) (rt -86.81 204.77 -86.29))(ACC (n torso) (a 3.39 -7.14 -19.01))(HJ (n hj1) (ax -91.20))(HJ (n hj2) (ax -49.08))(HJ (n raj1) (ax -86.90))(HJ (n raj2) (ax 1.06))(HJ (n raj3) (ax 124.01))(HJ (n raj4) (ax -1.03))(HJ (n laj1) (ax -86.90))(HJ (n laj2) (ax 5.74))(HJ (n laj3) (ax -124.81))(HJ (n laj4) (ax -91.63))(HJ (n rlj1) (ax 7.31))(HJ (n rlj2) (ax 21.02))(HJ (n rlj3) (ax 6.14))(HJ (n rlj4) (ax -128.55))(HJ (n rlj5) (ax 75.00))(HJ (n rlj6) (ax 49.30))(HJ (n llj1) (ax -0.86))(HJ (n llj2) (ax -23.12))(HJ (n llj3) (ax -27.25))(HJ (n llj4) (ax -53.12))(HJ (n llj5) (ax 68.98))(FRP (n lf) (c -0.04 -0.08 -0.01) (f 19.82 -13.73 4.93))(HJ (n llj6) (ax -50.23)) +{Tue 20:36:38 Step:728} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:38 Step:729} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:731} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:40 Step:841} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:843} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:40 Step:843} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:846} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:40 Step:847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:849} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:40 Step:849} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:850} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 653.92))(GS (sl 0) (sr 0) (t 316.30) (pm PlayOn))(foul 7)(GYR (n torso) (rt 13.70 -138.62 114.06))(ACC (n torso) (a -10.99 -9.62 7.72))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax -82.63))(HJ (n raj2) (ax -5.17))(HJ (n raj3) (ax 45.66))(HJ (n raj4) (ax 67.06))(HJ (n laj1) (ax -82.74))(HJ (n laj2) (ax 3.18))(HJ (n laj3) (ax -45.73))(HJ (n laj4) (ax -83.44))(HJ (n rlj1) (ax -29.30))(HJ (n rlj2) (ax -28.61))(HJ (n rlj3) (ax 72.18))(HJ (n rlj4) (ax -96.74))(HJ (n rlj5) (ax 50.78))(FRP (n rf) (c -0.04 -0.01 -0.01) (f -22.24 51.21 35.53))(HJ (n rlj6) (ax 26.55))(HJ (n llj1) (ax -12.67))(HJ (n llj2) (ax 31.76))(HJ (n llj3) (ax 101.78))(HJ (n llj4) (ax -104.50))(HJ (n llj5) (ax 50.70))(FRP (n lf) (c 0.04 -0.08 -0.01) (f 32.98 -43.77 31.63))(HJ (n llj6) (ax -23.85)) +{Tue 20:36:40 Step:852} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:40 Step:853} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:855} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:40 Step:855} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:40 Step:859} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:41 Step:859} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:861} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:864} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:41 Step:865} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:867} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:870} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:41 Step:871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:873} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:876} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:41 Step:877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:879} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:879} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:881} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:881} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:884} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:41 Step:885} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:887} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:887} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:890} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:41 Step:891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:893} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:895} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:41 Step:895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:41 Step:898} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:902} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:905} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:908} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:913} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:917} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:920} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:923} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:925} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:925} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:928} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:43 Step:977} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:980} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:43 Step:981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:984} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:43 Step:985} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:988} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:991} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:994} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:995} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:998} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:999} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1001} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1001} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1007} Server_Comm.py: The agent lost 5 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1013} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1013} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1016} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1017} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1019} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1023} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1025} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1025} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1029} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1031} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1079} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1081} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1081} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1083} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1083} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1085} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1085} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1088} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:46 Step:1095} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1097} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1097} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1099} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1099} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1102} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:46 Step:1103} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1105} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1107} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1109} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1115} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1117} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1119} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1119} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1122} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1123} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1126} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1127} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1129} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1135} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1135} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1138} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1139} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1141} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1143} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1143} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1145} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1191} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1192} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1193} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1205} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1207} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1213} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1215} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1215} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1217} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1220} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:49 Step:1221} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1224} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:49 Step:1225} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1227} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1235} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1238} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:49 Step:1241} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1243} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1249} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1249} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1251} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1251} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1253} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1255} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1255} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1257} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1259} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1261} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1264} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:50 Step:1265} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1267} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1267} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1269} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1269} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1272} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:50 Step:1273} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1275} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1281} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1283} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1283} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1286} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:50 Step:1289} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1291} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:50 Step:1295} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1297} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:51 Step:1297} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1300} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:51 Step:1301} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1303} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:51 Step:1307} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1310} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:51 Step:1319} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1322} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:52 Step:1367} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1371} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:52 Step:1371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1375} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:52 Step:1375} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1376} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 664.45))(GS (sl 0) (sr 0) (t 326.82) (pm PlayOn))(foul 7)(foul 7)(GYR (n torso) (rt 69.21 -0.42 -0.24))(ACC (n torso) (a 0.00 8.59 -8.39))(HJ (n hj1) (ax -0.05))(HJ (n hj2) (ax -0.04))(HJ (n raj1) (ax -72.25))(HJ (n raj2) (ax 0.84))(HJ (n raj3) (ax 39.91))(HJ (n raj4) (ax 83.29))(HJ (n laj1) (ax -72.25))(HJ (n laj2) (ax -0.50))(HJ (n laj3) (ax -39.92))(HJ (n laj4) (ax -83.29))(HJ (n rlj1) (ax -34.41))(HJ (n rlj2) (ax -37.72))(HJ (n rlj3) (ax 99.97))(HJ (n rlj4) (ax -129.11))(HJ (n rlj5) (ax 49.86))(HJ (n rlj6) (ax 44.89))(HJ (n llj1) (ax -34.47))(HJ (n llj2) (ax 37.71))(HJ (n llj3) (ax 99.97))(HJ (n llj4) (ax -129.10))(HJ (n llj5) (ax 49.86))(HJ (n llj6) (ax -44.80)) +{Tue 20:36:52 Step:1376} World_Parser.py: Unknown root tag: bytearray(b'foul') at 73, +Msg: (time (now 664.45))(GS (sl 0) (sr 0) (t 326.82) (pm PlayOn))(foul 7)(foul 7)(GYR (n torso) (rt 69.21 -0.42 -0.24))(ACC (n torso) (a 0.00 8.59 -8.39))(HJ (n hj1) (ax -0.05))(HJ (n hj2) (ax -0.04))(HJ (n raj1) (ax -72.25))(HJ (n raj2) (ax 0.84))(HJ (n raj3) (ax 39.91))(HJ (n raj4) (ax 83.29))(HJ (n laj1) (ax -72.25))(HJ (n laj2) (ax -0.50))(HJ (n laj3) (ax -39.92))(HJ (n laj4) (ax -83.29))(HJ (n rlj1) (ax -34.41))(HJ (n rlj2) (ax -37.72))(HJ (n rlj3) (ax 99.97))(HJ (n rlj4) (ax -129.11))(HJ (n rlj5) (ax 49.86))(HJ (n rlj6) (ax 44.89))(HJ (n llj1) (ax -34.47))(HJ (n llj2) (ax 37.71))(HJ (n llj3) (ax 99.97))(HJ (n llj4) (ax -129.10))(HJ (n llj5) (ax 49.86))(HJ (n llj6) (ax -44.80)) +{Tue 20:36:52 Step:1379} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:52 Step:1379} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1382} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:52 Step:1383} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1387} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:52 Step:1387} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1390} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:52 Step:1390} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:53 Step:1391} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1394} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1394} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:53 Step:1395} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1398} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1398} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:53 Step:1399} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1404} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1405} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1408} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1411} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1413} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1413} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1416} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1417} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1419} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1419} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1422} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1425} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1425} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1428} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1429} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1431} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1431} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1433} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:53 Step:1433} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1436} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:53 Step:1437} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:53 Step:1439} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1441} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1447} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1449} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1449} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1452} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:54 Step:1453} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1455} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1457} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1457} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1460} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:54 Step:1461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1463} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1466} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:54 Step:1471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1475} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:54 Step:1477} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1479} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:54 Step:1481} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:54 Step:1481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1511} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1513} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1516} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1520} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1525} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1528} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:56 Step:1529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1532} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:56 Step:1533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1535} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:56 Step:1535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1538} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:56 Step:1539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1542} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:56 Step:1543} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1546} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:56 Step:1547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1550} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:56 Step:1551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1554} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:59 Step:1669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1670} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1673} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1676} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:59 Step:1677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1679} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 670.51))(GS (sl 0) (sr 0) (t 332.88) (pm PlayOn))(foul 7)(GYR (n torso) (rt 136.81 -147.01 53.77))(ACC (n torso) (a -13.25 -34.07 33.06))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rfoot (pol 0.39 -57.34 -59.59)) (lfoot (pol 0.36 48.98 -58.99))) (G2R (pol 23.15 -45.77 32.23)) (G1R (pol 23.12 -39.97 34.93)) (F1R (pol 24.93 -14.25 40.02)) (mypos -8.07 0.62 0.34) (myorien 31.16) (ballpos -9.00 0.00 0.04) (L (pol 8.70 -59.88 19.40) (pol 12.39 21.20 39.04)) (L (pol 24.67 -59.71 21.36) (pol 24.93 -14.25 40.16)) (L (pol 24.92 -14.35 40.09) (pol 9.41 59.97 23.79)) (L (pol 21.43 -33.36 35.15) (pol 21.54 -49.73 27.77)) (L (pol 21.43 -33.33 35.26) (pol 23.25 -33.94 35.03)) (L (pol 21.60 -49.93 27.85) (pol 23.41 -49.44 28.16)) (L (pol 10.11 -43.25 30.06) (pol 9.71 -35.77 32.99)) (L (pol 9.71 -35.95 33.17) (pol 8.80 -30.61 34.81)) (L (pol 8.80 -30.35 34.79) (pol 7.58 -28.40 34.92)) (L (pol 7.58 -28.65 34.80) (pol 6.49 -33.91 32.80)) (L (pol 6.50 -33.88 32.72) (pol 6.12 -45.00 27.78)) (L (pol 6.11 -44.77 27.86) (pol 6.71 -53.96 22.93)) (L (pol 6.72 -54.11 23.04) (pol 7.88 -57.05 21.62)) (L (pol 7.88 -57.33 21.34) (pol 9.06 -55.22 23.02)) (L (pol 9.08 -54.93 23.15) (pol 9.87 -49.84 26.49)) (L (pol 9.87 -49.65 26.14) (pol 10.11 -43.12 29.90)))(HJ (n raj1) (ax -77.68))(HJ (n raj2) (ax -6.86))(HJ (n raj3) (ax 42.56))(HJ (n raj4) (ax 93.10))(HJ (n laj1) (ax -78.01))(HJ (n laj2) (ax -5.81))(HJ (n laj3) (ax -42.03))(HJ (n laj4) (ax -92.99))(HJ (n rlj1) (ax -37.01))(HJ (n rlj2) (ax -32.60))(HJ (n rlj3) (ax 84.11))(HJ (n rlj4) (ax -117.82))(HJ (n rlj5) (ax 50.32))(FRP (n rf) (c -0.04 -0.01 -0.01) (f -16.07 -5.49 61.36))(HJ (n rlj6) (ax 30.85))(HJ (n llj1) (ax -28.88))(HJ (n llj2) (ax 32.44))(HJ (n llj3) (ax 100.43))(HJ (n llj4) (ax -124.60))(HJ (n llj5) (ax 52.96))(FRP (n lf) (c 0.04 -0.00 -0.01) (f 2.02 -3.72 10.23))(HJ (n llj6) (ax -30.85)) +{Tue 20:36:59 Step:1680} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:59 Step:1681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1683} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1685} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1687} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1689} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1697} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1699} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1699} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1702} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:59 Step:1702} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1705} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1707} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1709} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1711} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1711} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1715} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:00 Step:1715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1717} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1720} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:00 Step:1721} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1724} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:00 Step:1727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1729} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1729} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1731} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1731} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1734} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:02 Step:1813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1816} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:02 Step:1817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1819} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:02 Step:1819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1822} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:02 Step:1823} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1825} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:02 Step:1825} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1828} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:02 Step:1829} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1830} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 673.53))(GS (sl 0) (sr 0) (t 335.89) (pm PlayOn))(foul 7)(GYR (n torso) (rt 50.21 273.76 -249.83))(ACC (n torso) (a 5.89 1.48 13.60))(HJ (n hj1) (ax 7.40))(HJ (n hj2) (ax -7.02))(HJ (n raj1) (ax -115.81))(HJ (n raj2) (ax -7.85))(HJ (n raj3) (ax 78.17))(HJ (n raj4) (ax 70.08))(HJ (n laj1) (ax -116.42))(HJ (n laj2) (ax 8.10))(HJ (n laj3) (ax -78.23))(HJ (n laj4) (ax -70.04))(HJ (n rlj1) (ax -38.37))(HJ (n rlj2) (ax -10.68))(HJ (n rlj3) (ax 68.55))(HJ (n rlj4) (ax -89.53))(HJ (n rlj5) (ax 50.99))(HJ (n rlj6) (ax 37.90))(HJ (n llj1) (ax -35.62))(HJ (n llj2) (ax 18.51))(HJ (n llj3) (ax 34.00))(HJ (n llj4) (ax -89.70))(HJ (n llj5) (ax 50.16))(FRP (n lf) (c -0.04 -0.08 -0.01) (f -8.71 30.57 14.81))(HJ (n llj6) (ax -38.02)) +{Tue 20:37:02 Step:1834} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:02 Step:1835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1838} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:02 Step:1843} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:02 Step:1846} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1850} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1866} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1870} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1873} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:03 Step:1873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1876} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1876} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1881} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1881} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1883} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:03 Step:1883} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1887} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1887} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1889} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:03 Step:1889} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1892} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:04 Step:1893} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1897} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:1897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1901} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:04 Step:1901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1905} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:04 Step:1905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1908} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:04 Step:1909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1911} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:1911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1914} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:04 Step:1915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1918} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:04 Step:1919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1922} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:04 Step:1923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1925} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:04 Step:1925} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1928} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:04 Step:1929} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1932} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:04 Step:1933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:04 Step:1936} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:1937} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:1940} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:1941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:1943} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:1943} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:1947} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:1947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:1950} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:1951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:1954} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:1955} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:1957} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:1957} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:1961} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:1961} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:1966} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:1973} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:1975} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:1975} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:1979} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:1979} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:1982} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:1983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:1985} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:1985} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:1987} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:1987} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:1990} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:1990} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:06 Step:1991} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:1994} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:1995} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:1997} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2025} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2027} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2029} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2032} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:07 Step:2033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2035} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2035} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2037} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2039} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2039} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2042} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:07 Step:2043} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2045} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2048} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:07 Step:2049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2051} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2051} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2054} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:07 Step:2055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2057} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2057} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2060} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:07 Step:2061} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2063} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2063} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2066} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:07 Step:2067} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2069} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2069} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2073} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2073} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2077} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2077} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2079} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:08 Step:2079} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2082} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2083} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2085} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:08 Step:2085} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2088} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2089} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2092} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2093} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2096} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2103} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2105} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:08 Step:2105} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2107} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:08 Step:2107} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2109} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:08 Step:2109} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2112} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2113} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2115} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:08 Step:2115} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2119} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2119} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2123} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2125} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2125} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2127} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2127} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2129} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2129} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2132} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:09 Step:2135} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2137} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2137} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2139} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2139} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2141} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2141} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2143} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2143} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2146} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:09 Step:2147} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2149} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2149} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2151} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2151} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2155} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:09 Step:2155} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2159} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:09 Step:2159} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2163} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:09 Step:2163} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2167} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:09 Step:2167} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2169} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:10 Step:2169} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2173} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2173} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2176} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2176} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:10 Step:2177} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2180} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2181} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2184} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2184} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2185} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2189} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2189} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2193} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2193} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2197} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2197} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2200} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2201} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2204} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2205} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2207} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:10 Step:2207} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2211} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2211} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2216} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2220} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2221} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2223} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2223} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2225} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2225} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2227} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2227} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2230} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2231} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2235} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2235} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2237} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2237} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2241} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2241} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2244} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2245} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2247} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2250} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2251} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2253} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2256} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2259} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2263} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:12 Step:2263} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2267} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:12 Step:2267} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2270} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:12 Step:2271} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2273} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2273} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2276} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:12 Step:2277} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2279} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2282} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:12 Step:2283} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2285} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:13 Step:2339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2341} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:13 Step:2341} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2344} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:13 Step:2345} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2347} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2351} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2353} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2353} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2355} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2355} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2357} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2359} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2361} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2363} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2365} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2365} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2367} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2367} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2370} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2373} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2375} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2383} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2384} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:14 Step:2387} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2395} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2397} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2451} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2453} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2458} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:16 Step:2461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2463} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2466} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:16 Step:2467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2476} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2477} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2479} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:17 Step:2481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2483} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:17 Step:2483} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2486} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2487} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2489} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:17 Step:2489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2492} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2495} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:17 Step:2495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2498} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2512} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2516} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2520} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2555} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:18 Step:2555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2558} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2562} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2566} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2583} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2583} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2588} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2591} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2595} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2598} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2605} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2607} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2607} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2610} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2614} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2617} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2628} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2637} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2639} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2639} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2643} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2643} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2645} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2645} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2648} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2651} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2711} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2711} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2714} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2717} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2721} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2721} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2724} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2725} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2728} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2729} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2732} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2739} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2739} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2743} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2745} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2748} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2751} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2754} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:2759} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:23 Step:2761} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2763} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2767} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:2767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2770} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:2771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2773} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2773} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2776} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:2777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2780} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:2783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2785} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2789} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:24 Step:2835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2837} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:24 Step:2839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2842} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2845} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2850} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2853} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2857} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2859} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2859} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2862} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2866} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2867} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2869} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2879} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2879} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2882} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2887} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2889} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:2889} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:2891} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:2891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:2894} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:26 Step:2895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:2897} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:2903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:2905} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:2905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:2907} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:26 Step:2909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:2911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:2913} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:2967} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:2969} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:2969} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:2971} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:2971} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:2974} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:27 Step:2975} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:2977} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:2977} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:2980} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:27 Step:2981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:2983} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:2987} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:2989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:2991} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:2991} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:2993} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:2993} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:2996} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:28 Step:3009} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3011} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3013} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3013} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3015} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3017} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3019} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3021} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3023} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3025} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3027} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3027} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3030} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:29 Step:3031} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3040} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:29 Step:3041} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3043} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3047} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3047} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3049} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3052} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:29 Step:3055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3057} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3059} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3059} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3061} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3062} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3067} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3069} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3069} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3071} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3077} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3079} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3079} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3081} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3081} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3084} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:30 Step:3085} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3087} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3089} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3091} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3091} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3094} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:30 Step:3094} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3095} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3098} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:30 Step:3103} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3105} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3105} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3108} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:30 Step:3109} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3111} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3111} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3114} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:31 Step:3119} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3122} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:31 Step:3123} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3125} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3125} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3127} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3127} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3130} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:31 Step:3131} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3133} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3136} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:31 Step:3139} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3141} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3141} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3144} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:31 Step:3145} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3147} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3147} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3150} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:31 Step:3151} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3153} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3153} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3155} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3155} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3158} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:31 Step:3159} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3161} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3161} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3164} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3169} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3174} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3175} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3178} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3179} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3183} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3183} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3187} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3191} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3194} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3195} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3199} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3199} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3204} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3205} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3209} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3281} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3283} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:34 Step:3283} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3285} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:34 Step:3285} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3288} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3289} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3291} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:34 Step:3291} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3293} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:34 Step:3293} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3297} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3299} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3301} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:34 Step:3301} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3304} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:35 Step:3307} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3309} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:35 Step:3309} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3312} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:35 Step:3313} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3325} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3327} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:35 Step:3327} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3329} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:35 Step:3329} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3332} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:35 Step:3339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3341} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:35 Step:3341} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3343} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:35 Step:3345} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:35 Step:3347} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3349} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3352} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3353} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3356} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3357} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3359} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3359} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3362} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3365} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3367} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:37 Step:3413} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3415} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:37 Step:3415} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3419} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:37 Step:3423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3426} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:37 Step:3427} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3429} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:37 Step:3429} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3432} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:37 Step:3433} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3436} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:37 Step:3437} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3439} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:38 Step:3439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3442} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:38 Step:3443} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3446} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:38 Step:3447} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3449} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:38 Step:3455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3458} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:38 Step:3459} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3462} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:38 Step:3463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3465} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:38 Step:3465} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3468} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:38 Step:3468} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:38 Step:3469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3475} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3483} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3485} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3488} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3492} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3501} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3503} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3503} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3506} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3507} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3510} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3535} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3538} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3541} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3543} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3543} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3545} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 707.87))(GS (sl 0) (sr 0) (t 370.18) (pm PlayOn))(foul 7)(GYR (n torso) (rt 259.12 -2.65 7.93))(ACC (n torso) (a 0.00 10.33 5.19))(HJ (n hj1) (ax -0.06))(HJ (n hj2) (ax 0.06))(See (P (team Gym) (id 1) (rlowerarm (pol 0.11 -35.86 21.52)) (llowerarm (pol 0.11 35.11 21.53))) (G2R (pol 23.61 52.35 -30.34)) (G1R (pol 23.60 56.63 -27.29)) (F2R (pol 25.81 31.53 -42.00)) (mypos -8.56 0.57 0.24) (myorien -45.70) (ballpos -9.00 0.00 0.04) (L (pol 13.61 -6.35 -47.30) (pol 8.56 59.89 -28.97)) (L (pol 25.85 31.17 -42.16) (pol 23.59 59.80 -27.40)) (L (pol 25.82 31.58 -41.90) (pol 10.61 -60.20 -30.54)) (L (pol 21.80 60.07 -27.46) (pol 22.07 48.15 -35.00)) (L (pol 22.05 48.04 -34.90) (pol 23.87 48.78 -34.54)) (L (pol 10.58 54.63 -32.13) (pol 10.23 59.85 -28.28)) (L (pol 6.84 60.01 -29.16) (pol 6.58 53.45 -33.68)) (L (pol 6.59 53.54 -33.96) (pol 7.16 43.79 -38.62)) (L (pol 7.17 44.06 -38.58) (pol 8.32 40.00 -40.31)) (L (pol 8.32 40.33 -40.18) (pol 9.51 42.64 -38.64)) (L (pol 9.52 42.79 -38.61) (pol 10.34 48.33 -35.91)) (L (pol 10.33 48.27 -35.79) (pol 10.59 54.82 -32.11)))(HJ (n raj1) (ax 36.33))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 47.70))(HJ (n raj4) (ax 90.10))(HJ (n laj1) (ax 36.32))(HJ (n laj2) (ax -1.01))(HJ (n laj3) (ax -47.70))(HJ (n laj4) (ax -90.10))(HJ (n rlj1) (ax -36.57))(HJ (n rlj2) (ax 20.78))(HJ (n rlj3) (ax 2.88))(HJ (n rlj4) (ax 0.98))(HJ (n rlj5) (ax 69.13))(HJ (n rlj6) (ax 47.27))(HJ (n llj1) (ax -36.43))(HJ (n llj2) (ax -21.08))(HJ (n llj3) (ax 2.98))(HJ (n llj4) (ax 1.00))(HJ (n llj5) (ax 69.20))(HJ (n llj6) (ax -47.26)) +{Tue 20:37:40 Step:3547} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3651} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3653} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3658} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3659} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:42 Step:3661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3663} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3666} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3669} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3675} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3681} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3684} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3687} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3689} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3692} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3699} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3699} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3701} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3704} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3707} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3709} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3709} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3713} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3713} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3715} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3737} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3739} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3791} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3793} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3796} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:45 Step:3797} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3800} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3801} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3804} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3807} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:3813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3815} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:3815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3819} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:3819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3821} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:3821} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3824} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3825} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3827} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:3827} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:46 Step:3831} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3834} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3838} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3842} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3849} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3852} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3853} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3855} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:47 Step:3855} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3858} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3859} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3861} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 714.19))(GS (sl 0) (sr 0) (t 376.49) (pm PlayOn))(foul 7)(GYR (n torso) (rt -143.40 -106.90 -164.07))(ACC (n torso) (a 4.62 -0.67 8.99))(HJ (n hj1) (ax -124.71))(HJ (n hj2) (ax -35.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.27 31.24 -31.95)) (rfoot (pol 0.52 2.62 -53.14)) (lfoot (pol 0.46 15.39 -54.65))) (G1L (pol 6.70 3.59 34.76)) (G2L (pol 6.79 24.43 31.75)) (F1L (pol 11.82 -51.41 21.62)) (B (pol 0.89 21.27 -9.32)) (mypos -8.35 0.25 0.60) (myorien 172.46) (ballpos -9.00 0.00 0.04) (L (pol 10.20 59.94 11.72) (pol 11.84 -51.26 21.67)) (L (pol 10.80 -60.13 17.51) (pol 11.80 -51.22 21.73)) (L (pol 5.60 -22.94 26.05) (pol 5.85 44.77 16.57)) (L (pol 5.61 -22.81 26.06) (pol 7.22 -14.91 28.50)) (L (pol 5.87 44.79 16.77) (pol 7.41 37.93 20.98)))(HJ (n raj1) (ax -93.04))(HJ (n raj2) (ax -13.59))(HJ (n raj3) (ax 90.00))(HJ (n raj4) (ax 70.00))(HJ (n laj1) (ax -94.91))(HJ (n laj2) (ax 13.68))(HJ (n laj3) (ax -90.00))(HJ (n laj4) (ax -70.00))(HJ (n rlj1) (ax -14.05))(HJ (n rlj2) (ax 4.33))(HJ (n rlj3) (ax 15.96))(HJ (n rlj4) (ax -68.55))(HJ (n rlj5) (ax 41.53))(HJ (n rlj6) (ax 4.13))(HJ (n llj1) (ax -14.00))(HJ (n llj2) (ax -29.37))(HJ (n llj3) (ax 47.29))(HJ (n llj4) (ax -103.46))(HJ (n llj5) (ax 36.44))(HJ (n llj6) (ax 5.32)) +{Tue 20:37:47 Step:3861} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:47 Step:3871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3873} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:47 Step:3873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3875} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:47 Step:3875} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3878} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3879} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3881} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:47 Step:3881} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3884} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:3887} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:3889} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:48 Step:3913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:3915} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:48 Step:3915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:3918} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:3918} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:3919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:3923} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:3923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:3926} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:3977} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:3979} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:3979} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:3981} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:3981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:3985} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:3989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:3991} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:3993} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:3996} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:3997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4000} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4001} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4004} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4005} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4007} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4007} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4011} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4014} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4015} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4018} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4018} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4021} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4024} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:51 Step:4025} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4028} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:51 Step:4029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4031} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4039} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4041} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4041} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4043} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4043} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4047} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4051} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4051} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4054} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:51 Step:4055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4058} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:52 Step:4105} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4108} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:52 Step:4109} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4120} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:53 Step:4121} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4123} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4125} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4127} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4129} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4129} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4131} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4131} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4133} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4136} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:53 Step:4137} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:53 Step:4140} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 719.78))(GS (sl 0) (sr 0) (t 382.07) (pm PlayOn))(foul 7)(GYR (n torso) (rt 37.20 -14.75 -57.39))(ACC (n torso) (a 1.59 2.58 -13.54))(HJ (n hj1) (ax -24.09))(HJ (n hj2) (ax -35.01))(HJ (n raj1) (ax -71.58))(HJ (n raj2) (ax -20.57))(HJ (n raj3) (ax 91.09))(HJ (n raj4) (ax 51.86))(HJ (n laj1) (ax -117.16))(HJ (n laj2) (ax 22.19))(HJ (n laj3) (ax -90.71))(HJ (n laj4) (ax -51.34))(HJ (n rlj1) (ax -24.81))(HJ (n rlj2) (ax 21.29))(HJ (n rlj3) (ax -22.34))(HJ (n rlj4) (ax -78.32))(HJ (n rlj5) (ax 45.91))(HJ (n rlj6) (ax -21.09))(HJ (n llj1) (ax -14.23))(HJ (n llj2) (ax -3.34))(HJ (n llj3) (ax 35.09))(HJ (n llj4) (ax -128.63))(HJ (n llj5) (ax 50.68))(HJ (n llj6) (ax -21.98)) +{Tue 20:37:53 Step:4145} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4147} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4147} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4149} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4149} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4151} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:54 Step:4171} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4173} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:54 Step:4173} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4176} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4177} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4179} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:54 Step:4179} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4182} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4183} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4184} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4185} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4188} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4189} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4191} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:54 Step:4191} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4195} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:54 Step:4195} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4197} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:54 Step:4197} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:54 Step:4200} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4203} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4204} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4205} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4207} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4215} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4217} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4219} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4219} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4223} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4223} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4227} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4227} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4229} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4229} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4232} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4233} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4235} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4239} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4241} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4243} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4249} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4249} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4251} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4251} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4254} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4255} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4257} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4259} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4261} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4264} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4265} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4267} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4267} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4269} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4269} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4271} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4277} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4280} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4281} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4283} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4283} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4286} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:57 Step:4287} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4289} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4289} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4290} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4291} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4292} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4293} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4295} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4295} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4297} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4297} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4299} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4299} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4302} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:57 Step:4303} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4305} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4305} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4307} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4307} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4309} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4309} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4311} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4311} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4313} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4321} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4323} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4323} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4326} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:57 Step:4327} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4329} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:57 Step:4329} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4332} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:58 Step:4333} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4335} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4335} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4338} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:58 Step:4339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4342} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:58 Step:4343} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4346} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:58 Step:4347} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4349} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4349} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4352} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:58 Step:4353} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4355} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4355} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4357} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4357} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4360} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:58 Step:4363} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4366} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:58 Step:4367} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4369} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4369} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4373} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:58 Step:4373} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4376} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:58 Step:4377} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4380} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4381} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4384} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4385} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4387} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4387} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4390} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4391} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4394} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4395} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4398} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4399} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4401} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4401} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4403} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4403} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4405} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4405} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4409} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4409} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4411} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4411} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4413} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4413} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4417} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4417} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4420} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4421} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4423} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4426} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4427} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4429} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4429} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4431} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4431} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4435} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4435} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4438} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4441} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4441} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4443} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4443} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4445} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4447} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4447} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4449} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4449} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4457} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4457} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4459} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4459} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4461} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4463} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4465} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4465} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4469} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4471} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4474} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4475} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4477} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4477} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4479} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4487} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4487} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4490} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4493} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4495} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4497} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4497} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4499} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4499} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4501} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4501} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4503} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4503} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4506} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4511} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4513} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4516} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4521} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4523} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4525} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4528} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4531} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4531} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4533} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4535} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4537} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4540} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4544} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4547} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4550} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4554} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4557} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4560} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4564} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4567} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4570} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4574} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4637} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4640} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4643} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4643} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4646} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 729.91))(GS (sl 0) (sr 0) (t 392.18) (pm PlayOn))(foul 7)(GYR (n torso) (rt 155.96 -97.67 -167.44))(ACC (n torso) (a -7.12 1.33 -3.85))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax 0.00))(HJ (n raj1) (ax -76.97))(HJ (n raj2) (ax 1.03))(HJ (n raj3) (ax 42.70))(HJ (n raj4) (ax 49.45))(HJ (n laj1) (ax -69.67))(HJ (n laj2) (ax -1.01))(HJ (n laj3) (ax -42.64))(HJ (n laj4) (ax -74.92))(HJ (n rlj1) (ax -28.70))(HJ (n rlj2) (ax -32.38))(HJ (n rlj3) (ax 99.99))(HJ (n rlj4) (ax -128.23))(HJ (n rlj5) (ax 48.59))(FRP (n rf) (c -0.04 0.08 -0.01) (f 31.25 1.41 20.34))(HJ (n rlj6) (ax 13.52))(HJ (n llj1) (ax -27.13))(HJ (n llj2) (ax 34.09))(HJ (n llj3) (ax 99.90))(HJ (n llj4) (ax -128.31))(HJ (n llj5) (ax 50.31))(HJ (n llj6) (ax -44.99)) +{Tue 20:38:05 Step:4646} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4647} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 729.93))(GS (sl 0) (sr 0) (t 392.20) (pm PlayOn))(foul 7)(GYR (n torso) (rt 98.01 12.58 78.48))(ACC (n torso) (a 5.94 -11.08 11.38))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax 0.00))(See (G2R (pol 23.47 45.24 33.02)) (G1R (pol 23.48 50.60 31.21)) (F2R (pol 25.55 20.07 36.67)) (mypos -8.43 0.12 0.34) (myorien -43.34) (ballpos -9.00 0.00 0.04) (L (pol 13.17 -12.75 34.54) (pol 8.66 60.03 23.39)) (L (pol 25.51 20.74 36.68) (pol 24.04 60.10 24.64)) (L (pol 25.55 20.49 36.71) (pol 10.21 -60.36 14.07)) (L (pol 21.84 55.12 26.97) (pol 21.84 38.48 33.04)) (L (pol 21.84 55.25 26.79) (pol 23.63 54.90 27.47)) (L (pol 21.86 38.50 33.18) (pol 23.61 39.01 32.81)) (L (pol 10.44 46.16 29.36) (pol 10.10 53.07 26.91)) (L (pol 10.12 53.06 26.83) (pol 9.24 58.21 24.06)) (L (pol 9.22 58.15 24.49) (pol 8.03 59.57 23.30)) (L (pol 8.03 59.56 23.27) (pol 6.90 55.15 24.77)) (L (pol 6.90 55.54 24.59) (pol 6.44 45.30 28.57)) (L (pol 6.44 45.39 28.84) (pol 6.93 34.86 31.94)) (L (pol 6.93 35.02 31.88) (pol 8.08 30.59 33.52)) (L (pol 8.08 30.69 33.47) (pol 9.28 32.81 33.03)) (L (pol 9.27 32.69 33.13) (pol 10.14 38.77 31.71)) (L (pol 10.15 39.07 31.82) (pol 10.45 46.21 29.45)))(HJ (n raj1) (ax -81.81))(HJ (n raj2) (ax -2.67))(HJ (n raj3) (ax 45.73))(HJ (n raj4) (ax 42.45))(HJ (n laj1) (ax -72.68))(HJ (n laj2) (ax -0.99))(HJ (n laj3) (ax -45.66))(HJ (n laj4) (ax -74.90))(HJ (n rlj1) (ax -27.61))(HJ (n rlj2) (ax -31.51))(HJ (n rlj3) (ax 100.05))(HJ (n rlj4) (ax -130.06))(HJ (n rlj5) (ax 48.63))(FRP (n rf) (c -0.03 0.08 -0.01) (f 57.09 11.42 -33.75))(HJ (n rlj6) (ax 7.24))(HJ (n llj1) (ax -24.65))(HJ (n llj2) (ax 33.26))(HJ (n llj3) (ax 102.15))(HJ (n llj4) (ax -130.16))(HJ (n llj5) (ax 50.77))(FRP (n lf) (c -0.02 0.02 -0.02) (f -47.42 -8.41 76.58))(HJ (n llj6) (ax -45.11)) +{Tue 20:38:05 Step:4647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4649} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4651} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4653} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4655} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4657} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:06 Step:4657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4659} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:06 Step:4659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4662} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4666} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4671} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:06 Step:4671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4674} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4677} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:06 Step:4677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4680} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4683} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:06 Step:4683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4686} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4690} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4693} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4695} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4699} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4699} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4702} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4707} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4710} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4711} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4713} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4722} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4723} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4725} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4725} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4728} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4729} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4731} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:08 Step:4739} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4742} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4746} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4749} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:08 Step:4751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4753} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:10 Step:4825} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4829} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4829} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4832} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4833} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 733.65))(GS (sl 0) (sr 0) (t 395.92) (pm PlayOn))(foul 7)(GYR (n torso) (rt 27.35 -79.16 164.55))(ACC (n torso) (a 13.88 -24.75 22.63))(HJ (n hj1) (ax -0.01))(HJ (n hj2) (ax -0.04))(See (P (team Gym) (id 1) (rfoot (pol 0.34 -57.00 -57.65)) (lfoot (pol 0.34 52.71 -58.48))) (F2L (pol 11.89 -53.27 38.75)) (mypos -8.20 -0.25 0.28) (myorien -80.83) (ballpos -9.00 0.00 0.04) (L (pol 12.75 47.16 36.23) (pol 9.95 60.01 25.59)) (L (pol 11.90 -53.33 38.77) (pol 10.20 -60.18 34.28)) (L (pol 16.97 60.17 26.62) (pol 11.90 -53.22 38.51)))(HJ (n raj1) (ax -86.58))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 39.64))(HJ (n raj4) (ax 90.45))(HJ (n laj1) (ax -72.19))(HJ (n laj2) (ax -0.99))(HJ (n laj3) (ax -39.72))(HJ (n laj4) (ax -90.73))(HJ (n rlj1) (ax -46.46))(HJ (n rlj2) (ax -33.27))(HJ (n rlj3) (ax 99.99))(HJ (n rlj4) (ax -130.03))(HJ (n rlj5) (ax 49.78))(FRP (n rf) (c -0.03 -0.08 -0.01) (f 64.82 3.96 11.83))(HJ (n rlj6) (ax 45.12))(HJ (n llj1) (ax -40.65))(HJ (n llj2) (ax 33.20))(HJ (n llj3) (ax 101.77))(HJ (n llj4) (ax -130.09))(HJ (n llj5) (ax 49.86))(FRP (n lf) (c 0.03 0.08 -0.02) (f -71.64 36.19 -6.74))(HJ (n llj6) (ax -45.11)) +{Tue 20:38:10 Step:4833} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4837} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4837} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4841} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4841} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4844} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4845} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4847} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:10 Step:4847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4850} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:4857} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4859} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:4875} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4878} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:4881} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4884} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:4885} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4887} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:4887} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4890} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:4891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4893} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:4893} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4897} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:12 Step:4897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4899} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:4899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4901} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:4901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4903} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:4903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4905} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:4905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4907} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:4911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4913} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:4955} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:4957} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:4957} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:4959} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:4959} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:4961} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:4961} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:4977} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:4979} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:4979} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:4982} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:4983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:4985} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:14 Step:4985} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:4988} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:4989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:4991} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:14 Step:4991} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:4994} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:4995} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:4998} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5003} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5005} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:14 Step:5005} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5008} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:5009} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:5011} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:15 Step:5019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5022} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5023} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5026} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5047} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5049} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:15 Step:5049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5051} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:15 Step:5051} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5054} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5058} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5059} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5062} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5063} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5064} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5065} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5068} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5069} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5072} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5073} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5075} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5075} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5078} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5079} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5081} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5081} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5084} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5085} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5087} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5087} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5090} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5091} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5094} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5095} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5097} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5097} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5100} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5101} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5104} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5105} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5107} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5107} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5110} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5113} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5114} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5115} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5117} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5119} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5119} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5121} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5121} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5123} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5123} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5126} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5127} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5129} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5131} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5131} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5133} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5136} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5139} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5140} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5141} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5145} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:18 Step:5146} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5147} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5149} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5151} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5153} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5153} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5155} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5157} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5159} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5159} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5161} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5161} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5163} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5163} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5166} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5169} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:18 Step:5170} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5171} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5173} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5173} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5176} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5177} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5179} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5180} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:18 Step:5181} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5183} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5184} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:19 Step:5193} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5195} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5197} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5197} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5199} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5201} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5205} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5207} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5209} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5209} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5210} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:19 Step:5211} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5213} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5219} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5219} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5220} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5221} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5225} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5227} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5227} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5229} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5229} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5231} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5231} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5233} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5233} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5236} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:20 Step:5237} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5239} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5239} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5243} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5245} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5245} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5247} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5249} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5249} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5251} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5251} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5253} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5263} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5266} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5267} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5269} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5269} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5272} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5273} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5276} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5281} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5283} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5283} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5286} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5291} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5294} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5295} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5297} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5297} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5300} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5305} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5307} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5307} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5309} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5309} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5312} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5313} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5315} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5315} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5317} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5317} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5319} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5319} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5322} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5323} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5325} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5325} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5327} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5334} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5381} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5383} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5385} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5385} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5387} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5387} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5389} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5389} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5391} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5391} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5394} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5395} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5397} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:24 Step:5397} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5400} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5409} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5412} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5413} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5415} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:24 Step:5419} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5421} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5423} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:24 Step:5423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5425} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:24 Step:5425} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5429} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5429} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5432} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:24 Step:5433} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5435} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:24 Step:5436} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:25 Step:5437} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5440} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5451} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5453} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5453} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5455} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5459} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5459} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5461} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:25 Step:5461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5464} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5472} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5476} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5477} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5480} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5484} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5531} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5533} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5536} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5542} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5543} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5545} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5547} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5549} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5553} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5555} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5558} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5561} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5564} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5567} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5570} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5573} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5576} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5576} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:28 Step:5581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5583} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5583} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5585} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5588} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5593} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5596} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5596} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:28 Step:5599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5602} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5603} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 749.07))(GS (sl 0) (sr 0) (t 411.31) (pm PlayOn))(foul 7)(GYR (n torso) (rt 21.32 48.28 -17.07))(ACC (n torso) (a -3.41 8.87 3.13))(HJ (n hj1) (ax 25.78))(HJ (n hj2) (ax -27.22))(See (P (team Gym) (id 1) (llowerarm (pol 0.27 41.13 -42.63)) (lfoot (pol 0.39 2.12 -25.73))) (F1R (pol 26.74 49.43 -48.60)) (mypos -9.33 -1.10 0.06) (myorien 24.05) (ballpos -9.00 0.00 0.04) (L (pol 10.35 50.74 -47.73) (pol 12.24 59.92 -34.59)) (L (pol 26.18 49.73 -48.16) (pol 17.10 60.18 -34.79)) (L (pol 11.16 36.41 -58.68) (pol 10.39 42.74 -54.74)) (L (pol 10.38 42.24 -55.13) (pol 9.22 44.77 -53.38)) (L (pol 9.21 44.71 -53.31) (pol 8.03 42.10 -55.35)))(HJ (n raj1) (ax -106.52))(HJ (n raj2) (ax -8.99))(HJ (n raj3) (ax 61.28))(HJ (n raj4) (ax 58.39))(HJ (n laj1) (ax -111.92))(HJ (n laj2) (ax 24.06))(HJ (n laj3) (ax -61.63))(HJ (n laj4) (ax -58.28))(HJ (n rlj1) (ax -48.76))(HJ (n rlj2) (ax -28.90))(HJ (n rlj3) (ax 20.26))(HJ (n rlj4) (ax -96.82))(HJ (n rlj5) (ax 9.39))(FRP (n rf) (c 0.04 -0.08 0.00) (f -32.79 -35.10 48.19))(HJ (n rlj6) (ax 27.53))(HJ (n llj1) (ax -45.50))(HJ (n llj2) (ax -12.91))(HJ (n llj3) (ax 72.11))(HJ (n llj4) (ax -85.21))(HJ (n llj5) (ax 51.41))(HJ (n llj6) (ax -27.42)) +{Tue 20:38:28 Step:5603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5605} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:5691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5694} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5698} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5699} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5702} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5706} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5711} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5711} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5714} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5718} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5721} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:32 Step:5785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5787} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:33 Step:5787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5791} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:5791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5794} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:5795} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5797} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:33 Step:5797} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5800} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:5801} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5803} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:33 Step:5803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5806} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:5807} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5809} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:33 Step:5809} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5811} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? diff --git a/logs/2025-11-04_20.36.23__TGZPRQ/Gym_1.log b/logs/2025-11-04_20.36.23__TGZPRQ/Gym_1.log new file mode 100644 index 0000000..c1703a4 --- /dev/null +++ b/logs/2025-11-04_20.36.23__TGZPRQ/Gym_1.log @@ -0,0 +1,2154 @@ +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 86, +Msg: (time (now 635.92))(GS (unum 1) (team left) (sl 0) (sr 0) (t 259.58) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a 0.00 0.00 9.81))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.34 -19.45)) (llowerarm (pol 0.21 28.70 -19.49))) (G2R (pol 30.21 -15.32 0.45)) (G1R (pol 29.74 -11.18 0.41)) (F1R (pol 29.38 6.19 -1.25)) (F2R (pol 33.67 -29.89 -0.99)) (B (pol 15.77 -25.29 -1.81)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 22.01 -49.65 -1.68) (pol 14.56 13.02 -2.24)) (L (pol 33.68 -29.96 -0.90) (pol 29.42 6.36 -0.97)) (L (pol 29.40 6.24 -1.14) (pol 3.73 60.25 -9.01)) (L (pol 33.70 -29.97 -0.83) (pol 19.41 -60.01 -1.69)) (L (pol 27.63 -8.08 -1.11) (pol 29.08 -19.66 -0.99)) (L (pol 27.67 -7.95 -1.19) (pol 29.44 -7.50 -1.17)) (L (pol 29.05 -19.60 -0.95) (pol 30.89 -18.47 -0.99)) (L (pol 17.57 -22.64 -1.95) (pol 16.80 -19.52 -1.85)) (L (pol 16.79 -19.73 -1.92) (pol 15.60 -18.28 -2.10)) (L (pol 15.62 -18.03 -2.05) (pol 14.45 -19.75 -2.20)) (L (pol 14.45 -19.80 -2.03) (pol 13.80 -24.07 -2.16)) (L (pol 13.81 -24.23 -2.15) (pol 13.97 -29.10 -2.10)) (L (pol 14.00 -29.10 -2.30) (pol 14.91 -32.39 -2.39)) (L (pol 14.91 -32.52 -2.21) (pol 16.13 -32.85 -1.92)) (L (pol 16.16 -32.76 -2.01) (pol 17.20 -30.54 -1.81)) (L (pol 17.22 -30.25 -1.98) (pol 17.71 -26.83 -1.87)) (L (pol 17.72 -26.54 -1.80) (pol 17.58 -22.81 -1.96)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.68))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c -0.00 -0.00 -0.02) (f 0.00 -0.04 69.68))(HJ (n llj6) (ax -0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 94, +Msg: (time (now 635.92))(GS (unum 1) (team left) (sl 0) (sr 0) (t 259.58) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a 0.00 0.00 9.81))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.34 -19.45)) (llowerarm (pol 0.21 28.70 -19.49))) (G2R (pol 30.21 -15.32 0.45)) (G1R (pol 29.74 -11.18 0.41)) (F1R (pol 29.38 6.19 -1.25)) (F2R (pol 33.67 -29.89 -0.99)) (B (pol 15.77 -25.29 -1.81)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 22.01 -49.65 -1.68) (pol 14.56 13.02 -2.24)) (L (pol 33.68 -29.96 -0.90) (pol 29.42 6.36 -0.97)) (L (pol 29.40 6.24 -1.14) (pol 3.73 60.25 -9.01)) (L (pol 33.70 -29.97 -0.83) (pol 19.41 -60.01 -1.69)) (L (pol 27.63 -8.08 -1.11) (pol 29.08 -19.66 -0.99)) (L (pol 27.67 -7.95 -1.19) (pol 29.44 -7.50 -1.17)) (L (pol 29.05 -19.60 -0.95) (pol 30.89 -18.47 -0.99)) (L (pol 17.57 -22.64 -1.95) (pol 16.80 -19.52 -1.85)) (L (pol 16.79 -19.73 -1.92) (pol 15.60 -18.28 -2.10)) (L (pol 15.62 -18.03 -2.05) (pol 14.45 -19.75 -2.20)) (L (pol 14.45 -19.80 -2.03) (pol 13.80 -24.07 -2.16)) (L (pol 13.81 -24.23 -2.15) (pol 13.97 -29.10 -2.10)) (L (pol 14.00 -29.10 -2.30) (pol 14.91 -32.39 -2.39)) (L (pol 14.91 -32.52 -2.21) (pol 16.13 -32.85 -1.92)) (L (pol 16.16 -32.76 -2.01) (pol 17.20 -30.54 -1.81)) (L (pol 17.22 -30.25 -1.98) (pol 17.71 -26.83 -1.87)) (L (pol 17.72 -26.54 -1.80) (pol 17.58 -22.81 -1.96)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.68))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c -0.00 -0.00 -0.02) (f 0.00 -0.04 69.68))(HJ (n llj6) (ax -0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 102, +Msg: (time (now 635.92))(GS (unum 1) (team left) (sl 0) (sr 0) (t 259.58) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a 0.00 0.00 9.81))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.34 -19.45)) (llowerarm (pol 0.21 28.70 -19.49))) (G2R (pol 30.21 -15.32 0.45)) (G1R (pol 29.74 -11.18 0.41)) (F1R (pol 29.38 6.19 -1.25)) (F2R (pol 33.67 -29.89 -0.99)) (B (pol 15.77 -25.29 -1.81)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 22.01 -49.65 -1.68) (pol 14.56 13.02 -2.24)) (L (pol 33.68 -29.96 -0.90) (pol 29.42 6.36 -0.97)) (L (pol 29.40 6.24 -1.14) (pol 3.73 60.25 -9.01)) (L (pol 33.70 -29.97 -0.83) (pol 19.41 -60.01 -1.69)) (L (pol 27.63 -8.08 -1.11) (pol 29.08 -19.66 -0.99)) (L (pol 27.67 -7.95 -1.19) (pol 29.44 -7.50 -1.17)) (L (pol 29.05 -19.60 -0.95) (pol 30.89 -18.47 -0.99)) (L (pol 17.57 -22.64 -1.95) (pol 16.80 -19.52 -1.85)) (L (pol 16.79 -19.73 -1.92) (pol 15.60 -18.28 -2.10)) (L (pol 15.62 -18.03 -2.05) (pol 14.45 -19.75 -2.20)) (L (pol 14.45 -19.80 -2.03) (pol 13.80 -24.07 -2.16)) (L (pol 13.81 -24.23 -2.15) (pol 13.97 -29.10 -2.10)) (L (pol 14.00 -29.10 -2.30) (pol 14.91 -32.39 -2.39)) (L (pol 14.91 -32.52 -2.21) (pol 16.13 -32.85 -1.92)) (L (pol 16.16 -32.76 -2.01) (pol 17.20 -30.54 -1.81)) (L (pol 17.22 -30.25 -1.98) (pol 17.71 -26.83 -1.87)) (L (pol 17.72 -26.54 -1.80) (pol 17.58 -22.81 -1.96)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.68))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c -0.00 -0.00 -0.02) (f 0.00 -0.04 69.68))(HJ (n llj6) (ax -0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 110, +Msg: (time (now 635.92))(GS (unum 1) (team left) (sl 0) (sr 0) (t 259.58) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a 0.00 0.00 9.81))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.34 -19.45)) (llowerarm (pol 0.21 28.70 -19.49))) (G2R (pol 30.21 -15.32 0.45)) (G1R (pol 29.74 -11.18 0.41)) (F1R (pol 29.38 6.19 -1.25)) (F2R (pol 33.67 -29.89 -0.99)) (B (pol 15.77 -25.29 -1.81)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 22.01 -49.65 -1.68) (pol 14.56 13.02 -2.24)) (L (pol 33.68 -29.96 -0.90) (pol 29.42 6.36 -0.97)) (L (pol 29.40 6.24 -1.14) (pol 3.73 60.25 -9.01)) (L (pol 33.70 -29.97 -0.83) (pol 19.41 -60.01 -1.69)) (L (pol 27.63 -8.08 -1.11) (pol 29.08 -19.66 -0.99)) (L (pol 27.67 -7.95 -1.19) (pol 29.44 -7.50 -1.17)) (L (pol 29.05 -19.60 -0.95) (pol 30.89 -18.47 -0.99)) (L (pol 17.57 -22.64 -1.95) (pol 16.80 -19.52 -1.85)) (L (pol 16.79 -19.73 -1.92) (pol 15.60 -18.28 -2.10)) (L (pol 15.62 -18.03 -2.05) (pol 14.45 -19.75 -2.20)) (L (pol 14.45 -19.80 -2.03) (pol 13.80 -24.07 -2.16)) (L (pol 13.81 -24.23 -2.15) (pol 13.97 -29.10 -2.10)) (L (pol 14.00 -29.10 -2.30) (pol 14.91 -32.39 -2.39)) (L (pol 14.91 -32.52 -2.21) (pol 16.13 -32.85 -1.92)) (L (pol 16.16 -32.76 -2.01) (pol 17.20 -30.54 -1.81)) (L (pol 17.22 -30.25 -1.98) (pol 17.71 -26.83 -1.87)) (L (pol 17.72 -26.54 -1.80) (pol 17.58 -22.81 -1.96)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.68))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c -0.00 -0.00 -0.02) (f 0.00 -0.04 69.68))(HJ (n llj6) (ax -0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 118, +Msg: (time (now 635.92))(GS (unum 1) (team left) (sl 0) (sr 0) (t 259.58) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a 0.00 0.00 9.81))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.34 -19.45)) (llowerarm (pol 0.21 28.70 -19.49))) (G2R (pol 30.21 -15.32 0.45)) (G1R (pol 29.74 -11.18 0.41)) (F1R (pol 29.38 6.19 -1.25)) (F2R (pol 33.67 -29.89 -0.99)) (B (pol 15.77 -25.29 -1.81)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 22.01 -49.65 -1.68) (pol 14.56 13.02 -2.24)) (L (pol 33.68 -29.96 -0.90) (pol 29.42 6.36 -0.97)) (L (pol 29.40 6.24 -1.14) (pol 3.73 60.25 -9.01)) (L (pol 33.70 -29.97 -0.83) (pol 19.41 -60.01 -1.69)) (L (pol 27.63 -8.08 -1.11) (pol 29.08 -19.66 -0.99)) (L (pol 27.67 -7.95 -1.19) (pol 29.44 -7.50 -1.17)) (L (pol 29.05 -19.60 -0.95) (pol 30.89 -18.47 -0.99)) (L (pol 17.57 -22.64 -1.95) (pol 16.80 -19.52 -1.85)) (L (pol 16.79 -19.73 -1.92) (pol 15.60 -18.28 -2.10)) (L (pol 15.62 -18.03 -2.05) (pol 14.45 -19.75 -2.20)) (L (pol 14.45 -19.80 -2.03) (pol 13.80 -24.07 -2.16)) (L (pol 13.81 -24.23 -2.15) (pol 13.97 -29.10 -2.10)) (L (pol 14.00 -29.10 -2.30) (pol 14.91 -32.39 -2.39)) (L (pol 14.91 -32.52 -2.21) (pol 16.13 -32.85 -1.92)) (L (pol 16.16 -32.76 -2.01) (pol 17.20 -30.54 -1.81)) (L (pol 17.22 -30.25 -1.98) (pol 17.71 -26.83 -1.87)) (L (pol 17.72 -26.54 -1.80) (pol 17.58 -22.81 -1.96)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.68))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c -0.00 -0.00 -0.02) (f 0.00 -0.04 69.68))(HJ (n llj6) (ax -0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 126, +Msg: (time (now 635.92))(GS (unum 1) (team left) (sl 0) (sr 0) (t 259.58) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a 0.00 0.00 9.81))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.34 -19.45)) (llowerarm (pol 0.21 28.70 -19.49))) (G2R (pol 30.21 -15.32 0.45)) (G1R (pol 29.74 -11.18 0.41)) (F1R (pol 29.38 6.19 -1.25)) (F2R (pol 33.67 -29.89 -0.99)) (B (pol 15.77 -25.29 -1.81)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 22.01 -49.65 -1.68) (pol 14.56 13.02 -2.24)) (L (pol 33.68 -29.96 -0.90) (pol 29.42 6.36 -0.97)) (L (pol 29.40 6.24 -1.14) (pol 3.73 60.25 -9.01)) (L (pol 33.70 -29.97 -0.83) (pol 19.41 -60.01 -1.69)) (L (pol 27.63 -8.08 -1.11) (pol 29.08 -19.66 -0.99)) (L (pol 27.67 -7.95 -1.19) (pol 29.44 -7.50 -1.17)) (L (pol 29.05 -19.60 -0.95) (pol 30.89 -18.47 -0.99)) (L (pol 17.57 -22.64 -1.95) (pol 16.80 -19.52 -1.85)) (L (pol 16.79 -19.73 -1.92) (pol 15.60 -18.28 -2.10)) (L (pol 15.62 -18.03 -2.05) (pol 14.45 -19.75 -2.20)) (L (pol 14.45 -19.80 -2.03) (pol 13.80 -24.07 -2.16)) (L (pol 13.81 -24.23 -2.15) (pol 13.97 -29.10 -2.10)) (L (pol 14.00 -29.10 -2.30) (pol 14.91 -32.39 -2.39)) (L (pol 14.91 -32.52 -2.21) (pol 16.13 -32.85 -1.92)) (L (pol 16.16 -32.76 -2.01) (pol 17.20 -30.54 -1.81)) (L (pol 17.22 -30.25 -1.98) (pol 17.71 -26.83 -1.87)) (L (pol 17.72 -26.54 -1.80) (pol 17.58 -22.81 -1.96)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.68))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c -0.00 -0.00 -0.02) (f 0.00 -0.04 69.68))(HJ (n llj6) (ax -0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 134, +Msg: (time (now 635.92))(GS (unum 1) (team left) (sl 0) (sr 0) (t 259.58) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a 0.00 0.00 9.81))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.34 -19.45)) (llowerarm (pol 0.21 28.70 -19.49))) (G2R (pol 30.21 -15.32 0.45)) (G1R (pol 29.74 -11.18 0.41)) (F1R (pol 29.38 6.19 -1.25)) (F2R (pol 33.67 -29.89 -0.99)) (B (pol 15.77 -25.29 -1.81)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 22.01 -49.65 -1.68) (pol 14.56 13.02 -2.24)) (L (pol 33.68 -29.96 -0.90) (pol 29.42 6.36 -0.97)) (L (pol 29.40 6.24 -1.14) (pol 3.73 60.25 -9.01)) (L (pol 33.70 -29.97 -0.83) (pol 19.41 -60.01 -1.69)) (L (pol 27.63 -8.08 -1.11) (pol 29.08 -19.66 -0.99)) (L (pol 27.67 -7.95 -1.19) (pol 29.44 -7.50 -1.17)) (L (pol 29.05 -19.60 -0.95) (pol 30.89 -18.47 -0.99)) (L (pol 17.57 -22.64 -1.95) (pol 16.80 -19.52 -1.85)) (L (pol 16.79 -19.73 -1.92) (pol 15.60 -18.28 -2.10)) (L (pol 15.62 -18.03 -2.05) (pol 14.45 -19.75 -2.20)) (L (pol 14.45 -19.80 -2.03) (pol 13.80 -24.07 -2.16)) (L (pol 13.81 -24.23 -2.15) (pol 13.97 -29.10 -2.10)) (L (pol 14.00 -29.10 -2.30) (pol 14.91 -32.39 -2.39)) (L (pol 14.91 -32.52 -2.21) (pol 16.13 -32.85 -1.92)) (L (pol 16.16 -32.76 -2.01) (pol 17.20 -30.54 -1.81)) (L (pol 17.22 -30.25 -1.98) (pol 17.71 -26.83 -1.87)) (L (pol 17.72 -26.54 -1.80) (pol 17.58 -22.81 -1.96)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.68))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c -0.00 -0.00 -0.02) (f 0.00 -0.04 69.68))(HJ (n llj6) (ax -0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 142, +Msg: (time (now 635.92))(GS (unum 1) (team left) (sl 0) (sr 0) (t 259.58) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a 0.00 0.00 9.81))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.34 -19.45)) (llowerarm (pol 0.21 28.70 -19.49))) (G2R (pol 30.21 -15.32 0.45)) (G1R (pol 29.74 -11.18 0.41)) (F1R (pol 29.38 6.19 -1.25)) (F2R (pol 33.67 -29.89 -0.99)) (B (pol 15.77 -25.29 -1.81)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 22.01 -49.65 -1.68) (pol 14.56 13.02 -2.24)) (L (pol 33.68 -29.96 -0.90) (pol 29.42 6.36 -0.97)) (L (pol 29.40 6.24 -1.14) (pol 3.73 60.25 -9.01)) (L (pol 33.70 -29.97 -0.83) (pol 19.41 -60.01 -1.69)) (L (pol 27.63 -8.08 -1.11) (pol 29.08 -19.66 -0.99)) (L (pol 27.67 -7.95 -1.19) (pol 29.44 -7.50 -1.17)) (L (pol 29.05 -19.60 -0.95) (pol 30.89 -18.47 -0.99)) (L (pol 17.57 -22.64 -1.95) (pol 16.80 -19.52 -1.85)) (L (pol 16.79 -19.73 -1.92) (pol 15.60 -18.28 -2.10)) (L (pol 15.62 -18.03 -2.05) (pol 14.45 -19.75 -2.20)) (L (pol 14.45 -19.80 -2.03) (pol 13.80 -24.07 -2.16)) (L (pol 13.81 -24.23 -2.15) (pol 13.97 -29.10 -2.10)) (L (pol 14.00 -29.10 -2.30) (pol 14.91 -32.39 -2.39)) (L (pol 14.91 -32.52 -2.21) (pol 16.13 -32.85 -1.92)) (L (pol 16.16 -32.76 -2.01) (pol 17.20 -30.54 -1.81)) (L (pol 17.22 -30.25 -1.98) (pol 17.71 -26.83 -1.87)) (L (pol 17.72 -26.54 -1.80) (pol 17.58 -22.81 -1.96)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.68))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c -0.00 -0.00 -0.02) (f 0.00 -0.04 69.68))(HJ (n llj6) (ax -0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 150, +Msg: (time (now 635.92))(GS (unum 1) (team left) (sl 0) (sr 0) (t 259.58) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a 0.00 0.00 9.81))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.34 -19.45)) (llowerarm (pol 0.21 28.70 -19.49))) (G2R (pol 30.21 -15.32 0.45)) (G1R (pol 29.74 -11.18 0.41)) (F1R (pol 29.38 6.19 -1.25)) (F2R (pol 33.67 -29.89 -0.99)) (B (pol 15.77 -25.29 -1.81)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 22.01 -49.65 -1.68) (pol 14.56 13.02 -2.24)) (L (pol 33.68 -29.96 -0.90) (pol 29.42 6.36 -0.97)) (L (pol 29.40 6.24 -1.14) (pol 3.73 60.25 -9.01)) (L (pol 33.70 -29.97 -0.83) (pol 19.41 -60.01 -1.69)) (L (pol 27.63 -8.08 -1.11) (pol 29.08 -19.66 -0.99)) (L (pol 27.67 -7.95 -1.19) (pol 29.44 -7.50 -1.17)) (L (pol 29.05 -19.60 -0.95) (pol 30.89 -18.47 -0.99)) (L (pol 17.57 -22.64 -1.95) (pol 16.80 -19.52 -1.85)) (L (pol 16.79 -19.73 -1.92) (pol 15.60 -18.28 -2.10)) (L (pol 15.62 -18.03 -2.05) (pol 14.45 -19.75 -2.20)) (L (pol 14.45 -19.80 -2.03) (pol 13.80 -24.07 -2.16)) (L (pol 13.81 -24.23 -2.15) (pol 13.97 -29.10 -2.10)) (L (pol 14.00 -29.10 -2.30) (pol 14.91 -32.39 -2.39)) (L (pol 14.91 -32.52 -2.21) (pol 16.13 -32.85 -1.92)) (L (pol 16.16 -32.76 -2.01) (pol 17.20 -30.54 -1.81)) (L (pol 17.22 -30.25 -1.98) (pol 17.71 -26.83 -1.87)) (L (pol 17.72 -26.54 -1.80) (pol 17.58 -22.81 -1.96)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.68))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c -0.00 -0.00 -0.02) (f 0.00 -0.04 69.68))(HJ (n llj6) (ax -0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 158, +Msg: (time (now 635.92))(GS (unum 1) (team left) (sl 0) (sr 0) (t 259.58) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a 0.00 0.00 9.81))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.34 -19.45)) (llowerarm (pol 0.21 28.70 -19.49))) (G2R (pol 30.21 -15.32 0.45)) (G1R (pol 29.74 -11.18 0.41)) (F1R (pol 29.38 6.19 -1.25)) (F2R (pol 33.67 -29.89 -0.99)) (B (pol 15.77 -25.29 -1.81)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 22.01 -49.65 -1.68) (pol 14.56 13.02 -2.24)) (L (pol 33.68 -29.96 -0.90) (pol 29.42 6.36 -0.97)) (L (pol 29.40 6.24 -1.14) (pol 3.73 60.25 -9.01)) (L (pol 33.70 -29.97 -0.83) (pol 19.41 -60.01 -1.69)) (L (pol 27.63 -8.08 -1.11) (pol 29.08 -19.66 -0.99)) (L (pol 27.67 -7.95 -1.19) (pol 29.44 -7.50 -1.17)) (L (pol 29.05 -19.60 -0.95) (pol 30.89 -18.47 -0.99)) (L (pol 17.57 -22.64 -1.95) (pol 16.80 -19.52 -1.85)) (L (pol 16.79 -19.73 -1.92) (pol 15.60 -18.28 -2.10)) (L (pol 15.62 -18.03 -2.05) (pol 14.45 -19.75 -2.20)) (L (pol 14.45 -19.80 -2.03) (pol 13.80 -24.07 -2.16)) (L (pol 13.81 -24.23 -2.15) (pol 13.97 -29.10 -2.10)) (L (pol 14.00 -29.10 -2.30) (pol 14.91 -32.39 -2.39)) (L (pol 14.91 -32.52 -2.21) (pol 16.13 -32.85 -1.92)) (L (pol 16.16 -32.76 -2.01) (pol 17.20 -30.54 -1.81)) (L (pol 17.22 -30.25 -1.98) (pol 17.71 -26.83 -1.87)) (L (pol 17.72 -26.54 -1.80) (pol 17.58 -22.81 -1.96)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.68))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c -0.00 -0.00 -0.02) (f 0.00 -0.04 69.68))(HJ (n llj6) (ax -0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 166, +Msg: (time (now 635.92))(GS (unum 1) (team left) (sl 0) (sr 0) (t 259.58) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a 0.00 0.00 9.81))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.34 -19.45)) (llowerarm (pol 0.21 28.70 -19.49))) (G2R (pol 30.21 -15.32 0.45)) (G1R (pol 29.74 -11.18 0.41)) (F1R (pol 29.38 6.19 -1.25)) (F2R (pol 33.67 -29.89 -0.99)) (B (pol 15.77 -25.29 -1.81)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 22.01 -49.65 -1.68) (pol 14.56 13.02 -2.24)) (L (pol 33.68 -29.96 -0.90) (pol 29.42 6.36 -0.97)) (L (pol 29.40 6.24 -1.14) (pol 3.73 60.25 -9.01)) (L (pol 33.70 -29.97 -0.83) (pol 19.41 -60.01 -1.69)) (L (pol 27.63 -8.08 -1.11) (pol 29.08 -19.66 -0.99)) (L (pol 27.67 -7.95 -1.19) (pol 29.44 -7.50 -1.17)) (L (pol 29.05 -19.60 -0.95) (pol 30.89 -18.47 -0.99)) (L (pol 17.57 -22.64 -1.95) (pol 16.80 -19.52 -1.85)) (L (pol 16.79 -19.73 -1.92) (pol 15.60 -18.28 -2.10)) (L (pol 15.62 -18.03 -2.05) (pol 14.45 -19.75 -2.20)) (L (pol 14.45 -19.80 -2.03) (pol 13.80 -24.07 -2.16)) (L (pol 13.81 -24.23 -2.15) (pol 13.97 -29.10 -2.10)) (L (pol 14.00 -29.10 -2.30) (pol 14.91 -32.39 -2.39)) (L (pol 14.91 -32.52 -2.21) (pol 16.13 -32.85 -1.92)) (L (pol 16.16 -32.76 -2.01) (pol 17.20 -30.54 -1.81)) (L (pol 17.22 -30.25 -1.98) (pol 17.71 -26.83 -1.87)) (L (pol 17.72 -26.54 -1.80) (pol 17.58 -22.81 -1.96)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.68))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c -0.00 -0.00 -0.02) (f 0.00 -0.04 69.68))(HJ (n llj6) (ax -0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 174, +Msg: (time (now 635.92))(GS (unum 1) (team left) (sl 0) (sr 0) (t 259.58) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a 0.00 0.00 9.81))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.34 -19.45)) (llowerarm (pol 0.21 28.70 -19.49))) (G2R (pol 30.21 -15.32 0.45)) (G1R (pol 29.74 -11.18 0.41)) (F1R (pol 29.38 6.19 -1.25)) (F2R (pol 33.67 -29.89 -0.99)) (B (pol 15.77 -25.29 -1.81)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 22.01 -49.65 -1.68) (pol 14.56 13.02 -2.24)) (L (pol 33.68 -29.96 -0.90) (pol 29.42 6.36 -0.97)) (L (pol 29.40 6.24 -1.14) (pol 3.73 60.25 -9.01)) (L (pol 33.70 -29.97 -0.83) (pol 19.41 -60.01 -1.69)) (L (pol 27.63 -8.08 -1.11) (pol 29.08 -19.66 -0.99)) (L (pol 27.67 -7.95 -1.19) (pol 29.44 -7.50 -1.17)) (L (pol 29.05 -19.60 -0.95) (pol 30.89 -18.47 -0.99)) (L (pol 17.57 -22.64 -1.95) (pol 16.80 -19.52 -1.85)) (L (pol 16.79 -19.73 -1.92) (pol 15.60 -18.28 -2.10)) (L (pol 15.62 -18.03 -2.05) (pol 14.45 -19.75 -2.20)) (L (pol 14.45 -19.80 -2.03) (pol 13.80 -24.07 -2.16)) (L (pol 13.81 -24.23 -2.15) (pol 13.97 -29.10 -2.10)) (L (pol 14.00 -29.10 -2.30) (pol 14.91 -32.39 -2.39)) (L (pol 14.91 -32.52 -2.21) (pol 16.13 -32.85 -1.92)) (L (pol 16.16 -32.76 -2.01) (pol 17.20 -30.54 -1.81)) (L (pol 17.22 -30.25 -1.98) (pol 17.71 -26.83 -1.87)) (L (pol 17.72 -26.54 -1.80) (pol 17.58 -22.81 -1.96)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.68))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c -0.00 -0.00 -0.02) (f 0.00 -0.04 69.68))(HJ (n llj6) (ax -0.00)) +{Tue 20:36:23 Step:3} World_Parser.py: Unknown root tag: bytearray(b'foul') at 182, +Msg: (time (now 635.92))(GS (unum 1) (team left) (sl 0) (sr 0) (t 259.58) (pm PlayOn))(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(foul 7)(GYR (n torso) (rt 0.07 -0.00 0.00))(ACC (n torso) (a 0.00 0.00 9.81))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax -0.00))(See (P (team Gym) (id 1) (rlowerarm (pol 0.22 -29.34 -19.45)) (llowerarm (pol 0.21 28.70 -19.49))) (G2R (pol 30.21 -15.32 0.45)) (G1R (pol 29.74 -11.18 0.41)) (F1R (pol 29.38 6.19 -1.25)) (F2R (pol 33.67 -29.89 -0.99)) (B (pol 15.77 -25.29 -1.81)) (mypos -14.20 6.80 0.56) (myorien -0.00) (ballpos 0.00 0.00 0.04) (L (pol 22.01 -49.65 -1.68) (pol 14.56 13.02 -2.24)) (L (pol 33.68 -29.96 -0.90) (pol 29.42 6.36 -0.97)) (L (pol 29.40 6.24 -1.14) (pol 3.73 60.25 -9.01)) (L (pol 33.70 -29.97 -0.83) (pol 19.41 -60.01 -1.69)) (L (pol 27.63 -8.08 -1.11) (pol 29.08 -19.66 -0.99)) (L (pol 27.67 -7.95 -1.19) (pol 29.44 -7.50 -1.17)) (L (pol 29.05 -19.60 -0.95) (pol 30.89 -18.47 -0.99)) (L (pol 17.57 -22.64 -1.95) (pol 16.80 -19.52 -1.85)) (L (pol 16.79 -19.73 -1.92) (pol 15.60 -18.28 -2.10)) (L (pol 15.62 -18.03 -2.05) (pol 14.45 -19.75 -2.20)) (L (pol 14.45 -19.80 -2.03) (pol 13.80 -24.07 -2.16)) (L (pol 13.81 -24.23 -2.15) (pol 13.97 -29.10 -2.10)) (L (pol 14.00 -29.10 -2.30) (pol 14.91 -32.39 -2.39)) (L (pol 14.91 -32.52 -2.21) (pol 16.13 -32.85 -1.92)) (L (pol 16.16 -32.76 -2.01) (pol 17.20 -30.54 -1.81)) (L (pol 17.22 -30.25 -1.98) (pol 17.71 -26.83 -1.87)) (L (pol 17.72 -26.54 -1.80) (pol 17.58 -22.81 -1.96)))(HJ (n raj1) (ax -0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax -0.00))(HJ (n laj1) (ax -0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax -0.00))(HJ (n laj4) (ax -0.00))(HJ (n rlj1) (ax -0.00))(HJ (n rlj2) (ax 0.00))(HJ (n rlj3) (ax 0.00))(HJ (n rlj4) (ax 0.00))(HJ (n rlj5) (ax 0.00))(FRP (n rf) (c 0.00 -0.00 -0.02) (f -0.00 -0.04 69.68))(HJ (n rlj6) (ax 0.00))(HJ (n llj1) (ax -0.00))(HJ (n llj2) (ax -0.00))(HJ (n llj3) (ax 0.00))(HJ (n llj4) (ax 0.00))(HJ (n llj5) (ax 0.00))(FRP (n lf) (c -0.00 -0.00 -0.02) (f 0.00 -0.04 69.68))(HJ (n llj6) (ax -0.00)) +{Tue 20:36:23 Step:3} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:23 Step:5} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:23 Step:5} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:23 Step:7} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:23 Step:7} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:23 Step:9} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:23 Step:9} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:23 Step:11} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:23 Step:11} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:23 Step:14} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:23 Step:15} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:23 Step:17} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:23 Step:17} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:23 Step:20} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:32 Step:21} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:32 Step:456} Server_Comm.py: The agent lost 434 consecutive packets! Is syncmode disabled? +{Tue 20:36:32 Step:459} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:463} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:32 Step:463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:465} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:467} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:32 Step:467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:469} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:32 Step:473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:475} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:32 Step:475} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:32 Step:477} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:481} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:483} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:483} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:485} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:488} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:491} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:494} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:498} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:499} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:501} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:501} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:503} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:503} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:506} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:507} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:509} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:511} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:513} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:516} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:517} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:521} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:33 Step:521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:523} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:33 Step:523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:33 Step:525} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:528} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:532} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:535} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:538} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:542} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:543} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:545} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:548} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:551} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:556} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:559} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:34 Step:559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:563} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:34 Step:563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:34 Step:566} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:572} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:575} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:577} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:580} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:583} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:586} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:590} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:594} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:597} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:35 Step:597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:601} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:601} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:605} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:605} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:608} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:35 Step:609} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:35 Step:610} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:35 Step:611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:35 Step:617} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:36 Step:617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:619} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:36 Step:619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:623} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:36 Step:659} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:36 Step:660} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:36 Step:661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:665} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:667} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:670} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:674} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:677} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:680} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:684} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:687} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:690} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:37 Step:693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:695} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:697} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:37 Step:697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:37 Step:700} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:38 Step:743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:745} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:747} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:38 Step:747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:758} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:38 Step:759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:38 Step:761} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:761} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:763} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:765} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:767} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:769} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:771} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:774} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:39 Step:775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:777} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:780} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:39 Step:781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:783} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:785} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:787} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:791} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:39 Step:795} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:797} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:797} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:799} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:799} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:39 Step:801} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:39 Step:801} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:39 Step:804} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 651.95))(GS (sl 0) (sr 0) (t 275.59) (pm PlayOn))(foul 7)(GYR (n torso) (rt 489.16 -154.06 203.47))(ACC (n torso) (a 0.36 -0.65 9.29))(HJ (n hj1) (ax 6.97))(HJ (n hj2) (ax -6.97))(HJ (n raj1) (ax -81.76))(HJ (n raj2) (ax -1.16))(HJ (n raj3) (ax 98.12))(HJ (n raj4) (ax 26.93))(HJ (n laj1) (ax -81.77))(HJ (n laj2) (ax 0.92))(HJ (n laj3) (ax -98.45))(HJ (n laj4) (ax -69.12))(HJ (n rlj1) (ax -4.71))(HJ (n rlj2) (ax -37.25))(HJ (n rlj3) (ax 56.16))(HJ (n rlj4) (ax -81.16))(HJ (n rlj5) (ax 44.85))(FRP (n rf) (c -0.02 -0.09 -0.00) (f -33.43 -2.80 -98.46))(HJ (n rlj6) (ax -21.16))(HJ (n llj1) (ax -5.54))(HJ (n llj2) (ax 44.99))(HJ (n llj3) (ax 56.94))(HJ (n llj4) (ax -129.99))(HJ (n llj5) (ax 38.12))(HJ (n llj6) (ax 21.26)) +{Tue 20:36:42 Step:913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:916} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:919} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:923} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:925} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:925} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:927} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:927} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:930} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:935} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:935} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:938} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:939} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:941} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:941} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:944} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:945} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:947} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:950} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:42 Step:951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:953} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:42 Step:953} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:42 Step:955} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:43 Step:955} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:958} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:43 Step:975} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1001} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:43 Step:1003} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1003} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1006} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1007} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1009} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1009} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1012} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1015} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1018} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1022} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1023} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1026} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1027} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1029} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1033} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1043} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1046} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:44 Step:1047} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1049} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:44 Step:1049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:44 Step:1052} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:45 Step:1053} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:45 Step:1057} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:45 Step:1057} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:46 Step:1133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1135} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1135} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1139} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:46 Step:1139} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1141} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 658.70))(GS (sl 0) (sr 0) (t 282.32) (pm PlayOn))(foul 7)(GYR (n torso) (rt 26.03 10.56 80.58))(ACC (n torso) (a -4.92 -2.41 2.29))(HJ (n hj1) (ax -0.04))(HJ (n hj2) (ax -0.01))(See (G2R (pol 23.90 -34.33 37.86)) (G1R (pol 23.80 -28.58 39.57)) (F1R (pol 25.57 -1.19 41.52)) (F2R (pol 26.13 -54.12 26.62)) (mypos -8.81 0.82 0.32) (myorien 21.28) (ballpos -9.00 0.00 0.04) (L (pol 10.38 -59.97 21.49) (pol 12.74 30.71 36.82)) (L (pol 26.15 -54.09 26.65) (pol 25.53 -1.20 41.37)) (L (pol 25.54 -1.34 41.56) (pol 9.52 59.89 22.73)) (L (pol 26.16 -53.99 26.71) (pol 20.92 -59.93 22.55)) (L (pol 22.15 -21.20 39.29) (pol 22.36 -39.28 33.61)) (L (pol 22.14 -21.17 39.11) (pol 23.92 -21.73 39.16)) (L (pol 22.34 -39.55 33.57) (pol 24.11 -38.45 34.21)) (L (pol 10.84 -32.86 35.11) (pol 10.44 -25.40 37.21)) (L (pol 10.44 -25.15 37.07) (pol 9.50 -19.75 38.40)) (L (pol 9.51 -19.87 38.41) (pol 8.28 -18.51 38.24)) (L (pol 8.26 -18.59 38.36) (pol 7.21 -24.17 36.63)) (L (pol 7.21 -24.28 36.84) (pol 6.87 -35.34 33.13)) (L (pol 6.86 -34.95 33.23) (pol 7.47 -44.29 29.58)) (L (pol 7.46 -44.48 29.73) (pol 8.64 -47.30 28.66)) (L (pol 8.65 -47.27 28.71) (pol 9.83 -45.23 29.93)) (L (pol 9.81 -45.32 29.55) (pol 10.63 -39.81 32.50)) (L (pol 10.62 -39.79 32.70) (pol 10.86 -32.76 35.15)))(HJ (n raj1) (ax -72.26))(HJ (n raj2) (ax 1.06))(HJ (n raj3) (ax 39.76))(HJ (n raj4) (ax 90.61))(HJ (n laj1) (ax -71.98))(HJ (n laj2) (ax 2.62))(HJ (n laj3) (ax -39.72))(HJ (n laj4) (ax -83.34))(HJ (n rlj1) (ax -30.63))(HJ (n rlj2) (ax -33.20))(HJ (n rlj3) (ax 101.72))(HJ (n rlj4) (ax -130.23))(HJ (n rlj5) (ax 48.93))(HJ (n rlj6) (ax 45.00))(HJ (n llj1) (ax -35.20))(HJ (n llj2) (ax 33.27))(HJ (n llj3) (ax 100.03))(HJ (n llj4) (ax -129.98))(HJ (n llj5) (ax 49.93))(FRP (n lf) (c -0.01 0.01 -0.01) (f -8.41 18.40 28.15))(HJ (n llj6) (ax -45.11)) +{Tue 20:36:46 Step:1141} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:46 Step:1141} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:46 Step:1142} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 658.72))(GS (sl 0) (sr 0) (t 282.34) (pm PlayOn))(foul 7)(GYR (n torso) (rt 127.37 -5.30 -1.60))(ACC (n torso) (a 12.57 -3.74 8.89))(HJ (n hj1) (ax -0.05))(HJ (n hj2) (ax -0.01))(HJ (n raj1) (ax -77.13))(HJ (n raj2) (ax -3.76))(HJ (n raj3) (ax 42.82))(HJ (n raj4) (ax 87.52))(HJ (n laj1) (ax -76.85))(HJ (n laj2) (ax -1.82))(HJ (n laj3) (ax -42.77))(HJ (n laj4) (ax -90.34))(HJ (n rlj1) (ax -30.91))(HJ (n rlj2) (ax -32.35))(HJ (n rlj3) (ax 98.13))(HJ (n rlj4) (ax -128.36))(HJ (n rlj5) (ax 49.39))(FRP (n rf) (c 0.02 0.08 -0.01) (f 34.27 -1.41 54.43))(HJ (n rlj6) (ax 45.13))(HJ (n llj1) (ax -32.67))(HJ (n llj2) (ax 32.42))(HJ (n llj3) (ax 99.98))(HJ (n llj4) (ax -131.78))(HJ (n llj5) (ax 50.41))(FRP (n lf) (c -0.04 0.03 -0.01) (f -32.96 2.33 28.03))(HJ (n llj6) (ax -45.00)) +{Tue 20:36:46 Step:1144} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1145} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1148} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1148} Server_Comm.py: Received a new packet while thinking! +{Tue 20:36:47 Step:1149} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1152} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1153} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1156} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1157} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1160} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1161} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1164} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1165} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1168} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1169} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1172} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1173} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1176} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1177} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1179} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:47 Step:1179} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1183} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:47 Step:1183} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:47 Step:1186} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:48 Step:1187} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1190} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:48 Step:1191} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1195} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:48 Step:1195} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1197} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1197} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1200} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:48 Step:1201} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1203} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1203} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1205} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1205} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1208} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:48 Step:1209} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1211} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1211} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1214} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:48 Step:1215} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1217} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:48 Step:1217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1220} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:48 Step:1221} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:48 Step:1223} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1237} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1239} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:49 Step:1239} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:49 Step:1242} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:50 Step:1291} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1294} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:50 Step:1295} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1298} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:50 Step:1299} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1302} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:50 Step:1303} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1306} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:50 Step:1307} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1310} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:50 Step:1311} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1314} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:50 Step:1315} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:50 Step:1317} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:51 Step:1317} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1321} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:51 Step:1321} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1324} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:51 Step:1327} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1329} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:51 Step:1329} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1331} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:51 Step:1331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1334} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:51 Step:1335} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1337} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:51 Step:1337} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:51 Step:1340} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:52 Step:1379} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1381} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1381} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1384} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:52 Step:1387} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1387} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1389} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1389} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1391} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1391} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1393} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1393} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1395} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:52 Step:1395} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:52 Step:1398} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:52 Step:1402} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 663.93))(GS (sl 0) (sr 0) (t 287.54) (pm PlayOn))(foul 7)(GYR (n torso) (rt -21.07 -1.49 29.82))(ACC (n torso) (a -1.16 -3.88 -8.51))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(HJ (n raj1) (ax 63.91))(HJ (n raj2) (ax -54.67))(HJ (n raj3) (ax 88.87))(HJ (n raj4) (ax 89.97))(HJ (n laj1) (ax 63.91))(HJ (n laj2) (ax 76.91))(HJ (n laj3) (ax -88.65))(HJ (n laj4) (ax -89.86))(HJ (n rlj1) (ax -15.01))(HJ (n rlj2) (ax 24.88))(HJ (n rlj3) (ax 10.20))(HJ (n rlj4) (ax 0.99))(HJ (n rlj5) (ax 53.38))(HJ (n rlj6) (ax 42.61))(HJ (n llj1) (ax -14.57))(HJ (n llj2) (ax -24.88))(HJ (n llj3) (ax 8.59))(HJ (n llj4) (ax 1.00))(HJ (n llj5) (ax 53.28))(HJ (n llj6) (ax -42.60)) +{Tue 20:36:55 Step:1505} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1507} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1507} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1509} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1512} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1515} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1518} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1521} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:55 Step:1521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1525} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1528} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1532} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1536} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1540} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:55 Step:1541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1543} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:55 Step:1545} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:56 Step:1545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1548} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:56 Step:1549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1587} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:56 Step:1587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1589} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:56 Step:1589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:56 Step:1591} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1593} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1596} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:57 Step:1597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1599} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1602} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:57 Step:1603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1605} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1605} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1608} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:57 Step:1608} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1612} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:57 Step:1613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1617} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1619} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1623} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:57 Step:1623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1625} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:57 Step:1625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1628} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:57 Step:1631} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:57 Step:1633} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1689} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1689} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1692} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:59 Step:1693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1695} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1698} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:59 Step:1699} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1701} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1703} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1707} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:36:59 Step:1707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1710} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:59 Step:1711} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1714} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:36:59 Step:1715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1717} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:36:59 Step:1717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:36:59 Step:1720} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:00 Step:1771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1774} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:00 Step:1775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1777} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:00 Step:1777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:00 Step:1780} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:01 Step:1781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:01 Step:1782} World_Parser.py: Unknown root tag: bytearray(b'foul') at 65, +Msg: (time (now 671.53))(GS (sl 0) (sr 0) (t 295.14) (pm PlayOn))(foul 7)(GYR (n torso) (rt 147.55 -3.19 -46.13))(ACC (n torso) (a 2.59 1.18 29.39))(HJ (n hj1) (ax -0.00))(HJ (n hj2) (ax 0.00))(HJ (n raj1) (ax 15.24))(HJ (n raj2) (ax 1.00))(HJ (n raj3) (ax 66.85))(HJ (n raj4) (ax 77.12))(HJ (n laj1) (ax 15.23))(HJ (n laj2) (ax -0.99))(HJ (n laj3) (ax -66.84))(HJ (n laj4) (ax -77.07))(HJ (n rlj1) (ax -33.54))(HJ (n rlj2) (ax 21.11))(HJ (n rlj3) (ax 2.57))(HJ (n rlj4) (ax 0.98))(HJ (n rlj5) (ax 54.18))(HJ (n rlj6) (ax 43.56))(HJ (n llj1) (ax -36.88))(HJ (n llj2) (ax -17.61))(HJ (n llj3) (ax 1.48))(HJ (n llj4) (ax 0.95))(HJ (n llj5) (ax 54.08))(HJ (n llj6) (ax -43.50)) +{Tue 20:37:01 Step:1783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1869} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1872} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1877} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1881} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1881} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1883} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:03 Step:1883} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1886} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:03 Step:1889} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1891} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:03 Step:1891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1893} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:03 Step:1893} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:03 Step:1896} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:1999} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2001} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2003} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2003} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2005} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:05 Step:2005} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:05 Step:2009} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:05 Step:2009} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2014} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:2015} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2017} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2020} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:2023} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2025} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:06 Step:2025} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2029} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:2029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2032} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:06 Step:2033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:06 Step:2036} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:07 Step:2093} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2095} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2095} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:07 Step:2097} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:07 Step:2097} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2099} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2101} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:08 Step:2101} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2104} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2105} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2107} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:08 Step:2107} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2110} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2111} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2112} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2119} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:08 Step:2119} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2122} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2136} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:08 Step:2139} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2141} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:08 Step:2141} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2143} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:08 Step:2143} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2145} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:08 Step:2145} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:08 Step:2146} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:09 Step:2147} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2150} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:09 Step:2151} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2153} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2153} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2156} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:09 Step:2157} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2159} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2159} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2162} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:09 Step:2167} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2169} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2169} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2171} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2171} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2173} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2173} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2175} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2175} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2178} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:09 Step:2179} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2181} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2181} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2183} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:09 Step:2183} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:09 Step:2185} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:10 Step:2203} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2207} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2207} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2209} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:10 Step:2209} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2213} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2213} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2216} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2220} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2221} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2224} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2225} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2229} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2229} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2232} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:10 Step:2233} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:10 Step:2237} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2237} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2240} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2240} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2245} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2247} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2247} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2250} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2251} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2253} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2256} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2259} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2261} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2264} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2265} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2267} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2267} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2269} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:11 Step:2269} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2272} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:11 Step:2273} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:11 Step:2275} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:12 Step:2283} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:12 Step:2285} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:13 Step:2329} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2331} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:13 Step:2331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2335} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:13 Step:2335} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2338} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:13 Step:2339} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2341} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:13 Step:2341} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2343} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:13 Step:2343} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2346} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:13 Step:2355} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:13 Step:2357} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2374} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:14 Step:2375} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2377} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:14 Step:2377} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:14 Step:2379} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:15 Step:2415} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2418} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:15 Step:2419} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2423} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:15 Step:2423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2426} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:15 Step:2427} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2429} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:15 Step:2429} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2431} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2433} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:15 Step:2433} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2436} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:15 Step:2437} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2439} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:15 Step:2439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2441} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2445} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2451} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:15 Step:2453} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2453} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2455} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2459} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:16 Step:2459} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2462} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:16 Step:2463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2466} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:16 Step:2467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2469} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2472} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:16 Step:2475} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2477} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2477} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2479} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2481} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2484} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:16 Step:2485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2488} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:16 Step:2489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2491} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2493} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:16 Step:2493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2496} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:16 Step:2497} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:16 Step:2499} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:17 Step:2499} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2502} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2503} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2505} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:17 Step:2505} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2509} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2512} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2515} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:17 Step:2515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2518} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2522} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2526} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2527} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2530} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:17 Step:2531} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:17 Step:2536} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2541} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:18 Step:2541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2543} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:18 Step:2543} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2546} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2549} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:18 Step:2549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2553} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2553} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2556} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2559} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:18 Step:2559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2562} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2565} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:18 Step:2565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2568} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2572} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:18 Step:2573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2575} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:18 Step:2575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:18 Step:2578} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2584} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2587} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2606} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2607} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2610} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2614} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2617} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2621} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:19 Step:2621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2623} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:19 Step:2623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:19 Step:2626} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2633} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2636} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2637} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2639} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2639} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2642} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2642} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:20 Step:2643} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2645} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2645} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2648} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2653} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2656} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2659} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2662} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2667} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2667} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2670} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:20 Step:2671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2673} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:20 Step:2673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:20 Step:2676} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:21 Step:2677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2679} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:21 Step:2679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2682} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:21 Step:2683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2685} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:21 Step:2685} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:21 Step:2689} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2725} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2728} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2729} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2731} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2731} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2733} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2739} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2739} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2741} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2741} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2743} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2745} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2745} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2747} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2750} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2753} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2753} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2755} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2757} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:22 Step:2757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:22 Step:2760} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:22 Step:2765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2771} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2773} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2775} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2777} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2779} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2779} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2782} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:23 Step:2783} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2785} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2787} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2791} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:23 Step:2793} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:23 Step:2793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2843} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2845} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:24 Step:2845} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2848} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:24 Step:2849} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:24 Step:2852} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2853} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2855} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2871} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2873} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2876} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2880} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2881} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2883} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2883} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2885} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2885} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2889} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2889} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2891} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2894} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:25 Step:2895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2897} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:25 Step:2897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:25 Step:2901} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:26 Step:2909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:26 Step:2910} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:26 Step:2911} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:2977} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:2979} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:2979} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:2981} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:2981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:2983} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:2983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:2986} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:27 Step:2989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:2991} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:27 Step:2991} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:27 Step:2994} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:28 Step:2995} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:2997} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:2997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3000} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:28 Step:3001} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3003} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3003} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:28 Step:3011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3014} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:28 Step:3015} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3018} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:28 Step:3019} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3022} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:28 Step:3023} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3025} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3025} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:28 Step:3033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3035} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:28 Step:3037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:28 Step:3039} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3041} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3044} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:29 Step:3044} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:29 Step:3045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3047} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3047} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3049} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3049} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3052} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:29 Step:3053} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3057} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3057} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3059} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3059} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3061} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:29 Step:3067} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:29 Step:3068} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3115} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3117} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3119} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3119} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3121} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3121} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3124} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:30 Step:3125} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3127} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:30 Step:3127} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:30 Step:3130} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:31 Step:3141} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:31 Step:3145} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3147} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3147} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3150} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:31 Step:3151} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3153} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3153} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3156} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:31 Step:3157} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3159} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3159} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3161} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3163} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:31 Step:3163} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3166} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:31 Step:3173} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:31 Step:3175} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:32 Step:3179} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3181} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:32 Step:3181} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3184} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3184} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:32 Step:3185} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3188} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3189} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3192} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3193} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3195} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:32 Step:3195} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3199} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3199} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:32 Step:3202} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:32 Step:3202} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3269} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:33 Step:3273} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3273} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3275} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:34 Step:3275} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3278} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3279} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3282} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3283} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3285} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:34 Step:3285} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3288} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3293} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3295} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:34 Step:3295} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3298} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:34 Step:3299} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:34 Step:3302} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3369} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3372} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3373} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3375} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3375} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3378} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3379} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3382} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3383} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3385} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3385} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3388} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3389} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3392} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:36 Step:3399} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3401} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3401} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3403} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3403} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3405} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:36 Step:3405} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:36 Step:3407} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:37 Step:3421} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3425} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:37 Step:3425} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3429} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:37 Step:3429} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3434} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:37 Step:3435} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3438} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:37 Step:3439} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3442} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:37 Step:3443} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3447} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:37 Step:3447} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3451} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:37 Step:3453} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3456} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:37 Step:3457} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:37 Step:3460} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:38 Step:3461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3463} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:38 Step:3463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3466} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:38 Step:3469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3471} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:38 Step:3471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3475} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:38 Step:3475} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3477} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:38 Step:3477} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3481} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:38 Step:3481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3486} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:38 Step:3493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3495} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:38 Step:3495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3498} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:38 Step:3499} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3503} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:38 Step:3503} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:38 Step:3506} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3511} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3514} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3518} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3521} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3521} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3525} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3525} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3529} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3529} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3532} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3535} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3537} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:39 Step:3537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3540} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3541} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3545} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3548} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:39 Step:3549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:39 Step:3551} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3554} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3558} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3561} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3563} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3563} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3567} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3570} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3571} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3574} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3578} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3582} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3583} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3585} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3589} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:40 Step:3589} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3591} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:40 Step:3591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:40 Step:3595} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:41 Step:3595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3599} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:41 Step:3603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3605} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3605} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3608} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:41 Step:3609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3612} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:41 Step:3612} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3616} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:41 Step:3617} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3619} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3622} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:41 Step:3623} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3625} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3628} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:41 Step:3629} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3631} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:41 Step:3631} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3635} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:41 Step:3635} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:41 Step:3637} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3637} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3640} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3643} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3643} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3646} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3650} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3653} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3655} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3659} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3661} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3661} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3663} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3666} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3674} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3675} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3677} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:42 Step:3677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:42 Step:3680} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:42 Step:3680} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3683} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3686} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3695} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3697} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3700} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3704} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3705} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3707} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3710} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3713} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3715} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3717} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:43 Step:3717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3720} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:43 Step:3721} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:43 Step:3724} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3725} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3727} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3730} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3740} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3741} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3743} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3746} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3750} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3754} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3755} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3758} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3762} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:44 Step:3763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3765} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:44 Step:3765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:44 Step:3768} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:45 Step:3769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3771} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3774} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:45 Step:3775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3777} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3780} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:45 Step:3781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3784} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:45 Step:3785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3788} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:45 Step:3789} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3792} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:45 Step:3795} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3797} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:45 Step:3797} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3801} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:45 Step:3801} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3805} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:45 Step:3805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3808} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:45 Step:3809} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3812} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:45 Step:3813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:45 Step:3815} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:3815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3817} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:3817} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3820} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3820} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:46 Step:3821} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3823} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:3823} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3825} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:46 Step:3825} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:46 Step:3828} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:46 Step:3829} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3889} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3891} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:47 Step:3891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3894} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3897} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:47 Step:3897} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3900} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:47 Step:3901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:47 Step:3903} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:48 Step:3903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:3905} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:48 Step:3905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:3908} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:48 Step:3909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:3911} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:48 Step:3917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:3919} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:48 Step:3923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:3925} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:48 Step:3925} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:3927} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:48 Step:3927} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:48 Step:3930} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:3979} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:3981} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:49 Step:3981} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:3983} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:49 Step:3983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:3987} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:49 Step:3987} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:49 Step:3991} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:3991} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:3994} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:3995} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:3998} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:3999} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4002} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4003} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4005} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4009} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4011} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4013} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4021} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4023} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4023} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4026} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:50 Step:4027} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4029} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:50 Step:4029} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:50 Step:4032} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:51 Step:4033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4035} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4035} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4038} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:51 Step:4039} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4041} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4041} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4044} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:51 Step:4045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4047} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:51 Step:4047} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:51 Step:4050} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:52 Step:4103} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4105} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4105} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4109} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:52 Step:4109} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4111} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4111} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4113} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:52 Step:4113} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:52 Step:4116} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:53 Step:4125} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4128} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:53 Step:4129} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4132} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:53 Step:4133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4136} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:53 Step:4137} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4140} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:53 Step:4140} Server_Comm.py: Received a new packet while thinking! +{Tue 20:37:53 Step:4141} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4143} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4143} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4146} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:53 Step:4147} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4149} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4149} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4151} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:53 Step:4171} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:53 Step:4173} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4237} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4241} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4241} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4243} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4243} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4245} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:55 Step:4245} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4248} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4249} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4252} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4256} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:55 Step:4257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:55 Step:4260} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4263} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4263} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4266} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4267} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4270} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4271} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4274} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4275} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4277} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4277} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4280} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4281} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4283} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4283} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4285} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4285} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4289} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4289} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4292} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:56 Step:4293} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4295} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:56 Step:4295} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:56 Step:4299} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:57 Step:4299} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:57 Step:4302} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:58 Step:4365} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4367} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4367} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4369} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4371} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4373} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4373} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4375} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:58 Step:4375} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4378} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:58 Step:4379} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:58 Step:4382} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4383} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4386} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4387} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4389} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4389} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4393} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4393} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4397} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4397} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4401} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4401} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4404} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4405} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4408} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4409} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4411} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:37:59 Step:4411} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4414} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4415} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:37:59 Step:4418} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:37:59 Step:4418} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4419} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4422} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4423} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4426} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4427} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4430} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4431} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4434} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4435} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4437} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4437} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4440} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4441} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4444} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4445} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4447} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4447} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4451} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4451} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4454} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4455} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4457} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:00 Step:4457} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4460} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:00 Step:4461} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:00 Step:4463} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4463} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4466} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4469} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4469} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4473} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4473} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4476} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4477} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4480} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4484} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4484} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4488} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4489} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4491} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4494} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4494} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4495} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4497} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:01 Step:4497} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4500} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:01 Step:4501} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:01 Step:4503} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4503} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4506} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4507} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4509} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4509} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4513} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4513} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4515} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4515} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4518} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4519} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4522} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4523} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4527} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4527} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4531} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4531} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4533} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:02 Step:4533} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4536} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:02 Step:4537} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:02 Step:4539} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4539} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4544} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4545} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4547} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4547} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4550} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4554} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4555} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4557} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:03 Step:4557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4561} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4565} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4568} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4572} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:03 Step:4576} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:03 Step:4577} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4580} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4584} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4587} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4591} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4594} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4595} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4598} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4599} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4601} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4601} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4604} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4605} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4608} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:04 Step:4609} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4611} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:04 Step:4611} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:04 Step:4615} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4615} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4618} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4619} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4621} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4621} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4625} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4625} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4628} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4629} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4631} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4631} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4634} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4635} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4637} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4637} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4640} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4640} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:05 Step:4641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4643} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4643} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4646} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4649} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:05 Step:4649} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4652} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:05 Step:4653} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:05 Step:4656} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4659} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:06 Step:4659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4662} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4665} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:06 Step:4665} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4668} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4673} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4673} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4676} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4680} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4681} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4683} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:06 Step:4683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4686} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4690} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:06 Step:4691} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:06 Step:4694} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4697} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4700} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4703} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4707} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4710} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4711} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4713} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4713} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4716} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4719} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4719} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4723} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4723} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4726} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:07 Step:4727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4729} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:07 Step:4729} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:07 Step:4732} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4733} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4736} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4740} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4741} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4743} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:08 Step:4743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4746} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4749} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:08 Step:4749} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4752} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4753} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4756} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4759} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:08 Step:4759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4763} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:08 Step:4763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:08 Step:4766} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:4767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4769} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4769} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4772} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:4773} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4775} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4777} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4777} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4781} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:4781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4785} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:4785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4787} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4790} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:4790} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:09 Step:4791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4793} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4796} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:4797} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4799} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:09 Step:4799} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4802} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:09 Step:4803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:09 Step:4805} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:10 Step:4805} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4810} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4814} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4818} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4819} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4822} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4823} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4826} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4827} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4831} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4831} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4835} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4835} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4838} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:10 Step:4839} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4841} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:10 Step:4841} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:10 Step:4844} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:4845} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4847} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:4847} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4849} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:4849} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4851} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:4851} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4854} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:4855} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4857} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4859} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:4859} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4861} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:4861} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4863} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:4863} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4865} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:11 Step:4865} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4869} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:4869} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4873} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:4873} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4876} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:4876} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:11 Step:4877} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4880} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:11 Step:4881} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:11 Step:4884} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:12 Step:4885} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4887} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:4887} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4890} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:12 Step:4891} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4893} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:4893} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4895} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:4895} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4898} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:12 Step:4899} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4901} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:4901} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4903} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4905} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:4905} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4907} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:4907} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4909} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:4909} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4912} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:12 Step:4913} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4914} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4915} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4916} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:12 Step:4917} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4919} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:4919} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4921} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:12 Step:4921} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:12 Step:4923} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:4923} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:4927} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:13 Step:4927} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:4931} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:4933} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:4933} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:4935} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:4935} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:4937} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:4937} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:4939} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:4939} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:4944} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:13 Step:4945} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:4947} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:4947} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:4950} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:13 Step:4951} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:4954} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:13 Step:4955} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:4957} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:13 Step:4957} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:13 Step:4960} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:4961} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:4965} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:4965} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:4970} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:4971} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:4974} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:4975} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:4978} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:4979} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:4982} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:4983} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:4986} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:4987} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:4989} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:14 Step:4989} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:4993} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:4993} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:4996} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:14 Step:4997} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:14 Step:4999} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:15 Step:4999} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5002} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5003} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5005} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:15 Step:5005} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5008} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5009} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5011} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:15 Step:5011} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5014} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5015} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5017} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:15 Step:5017} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5020} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5021} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5023} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:15 Step:5023} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5027} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5027} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5030} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5031} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5033} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:15 Step:5033} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5036} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5037} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5040} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:15 Step:5041} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:15 Step:5044} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5045} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5047} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5047} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5050} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5051} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5053} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5053} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5055} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5055} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5058} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5059} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5061} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5061} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5063} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5063} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5065} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5065} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5067} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5067} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5069} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:16 Step:5069} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5072} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5073} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5076} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:16 Step:5077} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:16 Step:5080} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5081} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5084} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5085} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5087} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5087} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5090} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5091} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5093} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5093} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5095} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5097} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5097} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5099} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5099} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5101} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5101} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5104} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5105} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5108} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5109} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5111} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:17 Step:5111} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5114} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:17 Step:5114} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5115} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5117} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:17 Step:5120} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5121} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5123} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5123} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5126} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5127} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5129} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5129} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5132} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5133} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5135} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5135} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5138} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5139} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5142} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5143} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5145} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5145} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5148} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5149} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5151} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5151} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5154} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:18 Step:5155} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5157} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5157} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5159} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5159} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5161} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:18 Step:5161} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:18 Step:5163} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5163} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5166} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:19 Step:5167} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5170} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:19 Step:5171} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5173} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5173} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5175} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5175} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5178} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:19 Step:5179} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5181} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5181} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5183} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5183} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5185} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5185} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5187} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5187} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5190} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:19 Step:5190} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5191} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5193} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5193} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5196} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:19 Step:5197} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5199} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5199} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5202} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:19 Step:5203} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5205} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5205} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5207} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:19 Step:5207} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:19 Step:5209} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5209} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5211} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5211} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5214} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:20 Step:5217} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5219} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5219} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5221} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5221} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5223} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5223} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5226} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:20 Step:5227} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5229} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5229} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5232} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:20 Step:5233} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5235} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5235} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5238} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:20 Step:5239} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5241} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5241} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5244} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:20 Step:5251} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5253} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:20 Step:5253} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:20 Step:5255} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5255} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5257} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5257} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5259} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5259} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5261} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5261} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5263} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5289} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5292} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:21 Step:5293} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5295} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5297} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:21 Step:5297} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:21 Step:5300} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5303} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5305} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5305} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5307} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5307} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5309} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5309} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5312} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5313} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5315} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5331} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5333} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:22 Step:5333} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5336} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:22 Step:5337} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:22 Step:5339} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5365} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5367} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5367} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5370} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5371} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5373} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5373} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5377} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5377} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5379} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5379} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5382} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:23 Step:5383} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5385} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:23 Step:5385} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:23 Step:5388} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5467} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5470} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:25 Step:5471} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:25 Step:5474} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5475} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5478} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5479} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5481} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5481} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5484} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5485} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5487} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5487} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5490} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5491} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5493} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:26 Step:5493} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5496} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5497} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5500} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:26 Step:5511} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:26 Step:5513} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5549} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5551} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5557} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5559} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5559} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5561} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:27 Step:5561} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5564} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:27 Step:5565} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:27 Step:5567} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5567} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5569} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5569} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5572} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5573} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5575} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5575} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5578} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5579} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5581} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5581} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5584} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5585} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5587} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5587} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5590} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5591} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5593} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5593} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5596} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:28 Step:5597} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5599} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5603} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5605} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5605} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5607} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:28 Step:5607} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:28 Step:5610} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5613} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5615} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5639} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5641} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5641} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5644} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5644} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5645} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5647} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:29 Step:5647} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5650} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5651} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5654} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:29 Step:5655} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:29 Step:5657} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:5657} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5659} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:5659} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5662} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5662} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:30 Step:5663} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5665} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:5665} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5669} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5669} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5671} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:5671} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5676} Server_Comm.py: The agent lost 4 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5677} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5679} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:5679} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5683} Server_Comm.py: The agent lost 3 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5683} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5686} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5687} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5689} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:5689} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5692} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5693} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5695} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:5695} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5697} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:30 Step:5697} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5700} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:30 Step:5701} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:30 Step:5703} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:31 Step:5703} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5706} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5707} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5710} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5711} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5714} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5715} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5717} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:31 Step:5717} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5720} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5721} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5723} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:31 Step:5723} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5726} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5726} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5727} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5729} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:31 Step:5729} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5732} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5733} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5735} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:31 Step:5735} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5737} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:31 Step:5737} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5740} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5741} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5743} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:31 Step:5743} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5746} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:31 Step:5747} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:31 Step:5750} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5751} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5753} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:32 Step:5753} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5756} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5757} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5759} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:32 Step:5759} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5762} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5763} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5764} Server_Comm.py: Received a new packet while thinking! +{Tue 20:38:32 Step:5765} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5767} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:32 Step:5767} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5770} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5771} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5773} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:32 Step:5773} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5775} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:32 Step:5775} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5778} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5779} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5781} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:32 Step:5781} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5784} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5785} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5787} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:32 Step:5787} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5790} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:32 Step:5791} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:32 Step:5793} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:33 Step:5793} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5796} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:5797} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5799} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:33 Step:5799} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5801} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:33 Step:5801} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5803} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:33 Step:5803} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5806} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:5807} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5810} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:5811} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5813} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:33 Step:5813} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5815} Server_Comm.py: The agent lost 1 packet! Is syncmode enabled? +{Tue 20:38:33 Step:5815} Server_Comm.py: Received a new packet while on world.update()! +{Tue 20:38:33 Step:5818} Server_Comm.py: The agent lost 2 consecutive packets! Is syncmode disabled? +{Tue 20:38:33 Step:5818} Server_Comm.py: Received a new packet while thinking! diff --git a/logs/2025-11-05_00.16.32__GMKFYN/Gym_1.log b/logs/2025-11-05_00.16.32__GMKFYN/Gym_1.log new file mode 100644 index 0000000..f6bc1ae --- /dev/null +++ b/logs/2025-11-05_00.16.32__GMKFYN/Gym_1.log @@ -0,0 +1,2 @@ +{Wed 00:16:32 Step:329} World_Parser.py: Received field line with NaNs [ nan nan nan 24.39 59.81 15.26] +{Wed 00:17:15 Step:4023} World_Parser.py: Received field line with NaNs [ 26.24 -46.08 20.23 nan nan nan] diff --git a/logs/2025-11-05_00.17.35__NYXFMK/Gym_1.log b/logs/2025-11-05_00.17.35__NYXFMK/Gym_1.log new file mode 100644 index 0000000..6b6704d --- /dev/null +++ b/logs/2025-11-05_00.17.35__NYXFMK/Gym_1.log @@ -0,0 +1,2 @@ +{Wed 00:17:35 Step:5229} World_Parser.py: Received field line with NaNs [10.91 55.99 14.98 nan nan nan] +{Wed 00:18:01 Step:7527} World_Parser.py: Received field line with NaNs [ 22.55 -45.61 18.66 nan nan nan] diff --git a/logs/2025-11-05_00.17.39__JUOGMJ/Gym_1.log b/logs/2025-11-05_00.17.39__JUOGMJ/Gym_1.log new file mode 100644 index 0000000..4e4c11d --- /dev/null +++ b/logs/2025-11-05_00.17.39__JUOGMJ/Gym_1.log @@ -0,0 +1,4 @@ +{Wed 00:17:39 Step:5165} World_Parser.py: Received field line with NaNs [ nan nan nan 7.66 60.06 14.84] +{Wed 00:17:46 Step:6075} World_Parser.py: Received field line with NaNs [ nan nan nan 7.65 59.95 14.42] +{Wed 00:18:10 Step:8429} World_Parser.py: Received field line with NaNs [ 22.66 -59.34 18.79 nan nan nan] +{Wed 00:18:49 Step:12421} World_Parser.py: Received field line with NaNs [ 13.97 -34.75 10.48 nan nan nan] diff --git a/logs/2025-11-05_00.18.25__BWAREY/Gym_1.log b/logs/2025-11-05_00.18.25__BWAREY/Gym_1.log new file mode 100644 index 0000000..165fbc0 --- /dev/null +++ b/logs/2025-11-05_00.18.25__BWAREY/Gym_1.log @@ -0,0 +1,4 @@ +{Wed 00:18:25 Step:7867} World_Parser.py: Received field line with NaNs [ nan nan nan 8.89 -60.08 16.57] +{Wed 00:18:26 Step:8051} World_Parser.py: Received field line with NaNs [ nan nan nan 7.98 59.64 13.32] +{Wed 00:19:04 Step:11337} World_Parser.py: Received field line with NaNs [ nan nan nan 11.13 -59.98 21.56] +{Wed 00:19:28 Step:13279} World_Parser.py: Received field line with NaNs [ nan nan nan 11.47 -60.17 18.37] diff --git a/logs/2025-11-05_00.19.30__YTALDC/Gym_1.log b/logs/2025-11-05_00.19.30__YTALDC/Gym_1.log new file mode 100644 index 0000000..6924866 --- /dev/null +++ b/logs/2025-11-05_00.19.30__YTALDC/Gym_1.log @@ -0,0 +1 @@ +{Wed 00:19:30 Step:13049} World_Parser.py: Received field line with NaNs [ nan nan nan 24.4 59.84 14.79] diff --git a/logs/2025-11-05_00.19.41__YOHMIM/Gym_1.log b/logs/2025-11-05_00.19.41__YOHMIM/Gym_1.log new file mode 100644 index 0000000..6a37082 --- /dev/null +++ b/logs/2025-11-05_00.19.41__YOHMIM/Gym_1.log @@ -0,0 +1 @@ +{Wed 00:19:41 Step:14609} World_Parser.py: Received field line with NaNs [10. 58.84 17.06 nan nan nan] diff --git a/logs/2025-11-05_00.21.56__ROCYYE/Gym_1.log b/logs/2025-11-05_00.21.56__ROCYYE/Gym_1.log new file mode 100644 index 0000000..aef3995 --- /dev/null +++ b/logs/2025-11-05_00.21.56__ROCYYE/Gym_1.log @@ -0,0 +1 @@ +{Wed 00:21:56 Step:1675} World_Parser.py: Received field line with NaNs [ nan nan nan 10.93 -60.15 17.86] diff --git a/logs/Logger.py b/logs/Logger.py new file mode 100644 index 0000000..2eb3152 --- /dev/null +++ b/logs/Logger.py @@ -0,0 +1,48 @@ +from pathlib import Path +from datetime import datetime +import random +from string import ascii_uppercase + +class Logger(): + _folder = None + + def __init__(self, is_enabled:bool, topic:str) -> None: + self.no_of_entries = 0 + self.enabled = is_enabled + self.topic = topic + + def write(self, msg:str, timestamp:bool=True, step:int=None) -> None: + ''' + Write `msg` to file named `self.topic` + + Parameters + ---------- + msg : str + message to be written + step : int + simulation step is written before the message to provide additional information + default is `None` (nothing is written before the message) + ''' + if not self.enabled: return + + # The log folder is only created if needed + if Logger._folder is None: + rnd = ''.join(random.choices(ascii_uppercase, k=6)) # Useful if multiple processes are running in parallel + Logger._folder = "./logs/" + datetime.now().strftime("%Y-%m-%d_%H.%M.%S__") + rnd + "/" + print("\nLogger Info: see",Logger._folder) + Path(Logger._folder).mkdir(parents=True, exist_ok=True) + + self.no_of_entries += 1 + + with open(Logger._folder + self.topic + ".log", 'a+') as f: + prefix = "" + write_step = step is not None + if timestamp or write_step: + prefix = "{" + if timestamp: + prefix += datetime.now().strftime("%a %H:%M:%S") + if write_step: prefix += " " + if write_step: + prefix += f'Step:{step}' + prefix += "} " + f.write(prefix + msg + "\n") \ No newline at end of file diff --git a/logs/__pycache__/Logger.cpython-313.pyc b/logs/__pycache__/Logger.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1b81b05d6ff59e5d97e343503eacc1c0edeaf865 GIT binary patch literal 2702 zcmbsrU2GdgdiKZb&Bo5J+oYyWH#wYkIpRFDDG*4YYLq})qRQK}a4FhsyklqE^{$!S zPzW6A)2T>BO(d#D9J;#bBzkv9*L&+D52t&MuZ36xtxmdo>02O3mF|ge*4`Kpf(K^h zZ@$0zX1<^K#yiQRf?y;+R_uRB2>q84(GZ)+&J-ZmkdAcj1e)atr!t&B!O!x94{_my zKm_24C&bwpiK(a`4Iw?2M!Gb{H>?n;Bxv!6jLj^y$ zJQ-wd=j2c(>k5;d=SZ90PLvX_C8>1ME0r*L2mwHIRIz;nyXKOEEgB2Fid~=*!NCe~ z3qtb{Y+`;fdgloM5FKtFIe<0BD_st^i>ppE1_+gq#?KK(Y64BVp5YZ?uYlOtr}5^d zgk=Q8qK};-VSa}kpKYe9Dt&5n*(>AGg6H~y=?1ooN2k1tuH%`OKYHA=@aXjMQ^w3& z6RqI^!AY?WSn;ZHpW6`7yH?qKvoAL&DI>oArZo4N(op`w7_Juh^i!+cXJ={-#> zmLF_+8)2`Qp~t-pM*FGI2-p`zL4_(GL{Fl~TUPf)$jkwx!dK!ZgafF^X(8mAQyI{MMXJf65s}y_{zxcP+*xluKEE{piQW7QGK(7 znVlu9UIfblb`^GOLCJQ5P|3H;D~=i1o(t_(noK&G5!QbRYZ+uO(-VkmQLad(3c*GDO{#>-21}FAg2Zyn24P){ut$g{ znr%JQWG?uJ!SzdMyB~F>uD)~iosBc!N+{8Db@IK*TKizVCw2Yc`oWKeZ{$AAeR|-| zv08faZqM_VkJmH9pZ5QK|6lk2ZD31#p{BjCdF;$x?QAV`cJp_y)iSSbE*5H;!jBKe$*|-9krP{T`rmST z!>q{%K9|$~OLl)Sd_A|Gs~-7e{N{MAXXLh2>p6NyyqBE#th>Ia@A7ngU#5C`bDws3 z_CaU=pJwa(_OD3~diU2;>5rCgI3GHHbhie^Y6D}p%XbH+YN@HU=?8s-)uXrcn-kTe z4|+48SdCS!>X{9 zzaYY1q(-_~X@>R5{<8Qp0RDjL9X*$3wnZWKSoQI31kI# zAe?Ud;q=+mBgPEz#vaVP7H3x}Sa$5Cu!zGVC%*v+mEh2Dog1|u9_49Zw~j~U=Nh4y mB+r6?T|fUZ0NVn`araUGeU$kUCGVr5N8%Hl_6-6MF8&SyvPQ-L literal 0 HcmV?d00001 diff --git a/math_ops/Inverse_Kinematics.py b/math_ops/Inverse_Kinematics.py new file mode 100644 index 0000000..02446e6 --- /dev/null +++ b/math_ops/Inverse_Kinematics.py @@ -0,0 +1,242 @@ +from math import asin, atan, atan2, pi, sqrt +from math_ops.Matrix_3x3 import Matrix_3x3 +from math_ops.Math_Ops import Math_Ops as M +import numpy as np + +class Inverse_Kinematics(): + + # leg y deviation, upper leg height, upper leg depth, lower leg length, knee extra angle, max ankle z + NAO_SPECS_PER_ROBOT = ((0.055, 0.12, 0.005, 0.1, atan(0.005/0.12), -0.091), + (0.055, 0.13832, 0.005, 0.11832, atan(0.005/0.13832), -0.106), + (0.055, 0.12, 0.005, 0.1, atan(0.005/0.12), -0.091), + (0.072954143,0.147868424, 0.005, 0.127868424, atan(0.005/0.147868424), -0.114), + (0.055, 0.12, 0.005, 0.1, atan(0.005/0.12), -0.091)) + + TORSO_HIP_Z = 0.115 # distance in the z-axis, between the torso and each hip (same for all robots) + TORSO_HIP_X = 0.01 # distance in the x-axis, between the torso and each hip (same for all robots) (hip is 0.01m to the back) + + def __init__(self, robot) -> None: + self.robot = robot + self.NAO_SPECS = Inverse_Kinematics.NAO_SPECS_PER_ROBOT[robot.type] + + def torso_to_hip_transform(self, coords, is_batch=False): + ''' + Convert cartesian coordinates that are relative to torso to coordinates that are relative the center of both hip joints + + Parameters + ---------- + coords : array_like + One 3D position or list of 3D positions + is_batch : `bool` + Indicates if coords is a batch of 3D positions + + Returns + ------- + coord : `list` or ndarray + A numpy array is returned if is_batch is False, otherwise, a list of arrays is returned + ''' + if is_batch: + return [c + (Inverse_Kinematics.TORSO_HIP_X, 0, Inverse_Kinematics.TORSO_HIP_Z) for c in coords] + else: + return coords + (Inverse_Kinematics.TORSO_HIP_X, 0, Inverse_Kinematics.TORSO_HIP_Z) + + + def head_to_hip_transform(self, coords, is_batch=False): + ''' + Convert cartesian coordinates that are relative to head to coordinates that are relative the center of both hip joints + + Parameters + ---------- + coords : array_like + One 3D position or list of 3D positions + is_batch : `bool` + Indicates if coords is a batch of 3D positions + + Returns + ------- + coord : `list` or ndarray + A numpy array is returned if is_batch is False, otherwise, a list of arrays is returned + ''' + coords_rel_torso = self.robot.head_to_body_part_transform( "torso", coords, is_batch ) + return self.torso_to_hip_transform(coords_rel_torso, is_batch) + + def get_body_part_pos_relative_to_hip(self, body_part_name): + ''' Get body part position relative to the center of both hip joints ''' + bp_rel_head = self.robot.body_parts[body_part_name].transform.get_translation() + return self.head_to_hip_transform(bp_rel_head) + + def get_ankle_pos_relative_to_hip(self, is_left): + ''' Internally calls get_body_part_pos_relative_to_hip() ''' + return self.get_body_part_pos_relative_to_hip("lankle" if is_left else "rankle") + + def get_linear_leg_trajectory(self, is_left:bool, p1, p2=None, foot_ori3d=(0,0,0), dynamic_pose:bool=True, resolution=100): + ''' + Compute leg trajectory so that the ankle moves linearly between two 3D points (relative to hip) + + Parameters + ---------- + is_left : `bool` + set to True to select left leg, False to select right leg + p1 : array_like, length 3 + if p2 is None: + p1 is the target position (relative to hip), and the initial point is given by the ankle's current position + if p2 is not None: + p1 is the initial point (relative to hip) + p2 : array_like, length 3 / `None` + target position (relative to hip) or None (see p1) + foot_ori3d : array_like, length 3 + rotation around x,y,z (rotation around x & y are biases, relative to a vertical pose, or dynamic pose, if enabled) + dynamic_pose : `bool` + enable dynamic feet rotation to be parallel to the ground, based on IMU + resolution : int + interpolation resolution; more resolution is always better, but it takes more time to compute; + having more points does not make the movement slower, because if there are excessive points they are removed + during the analytical optimization + + Returns + ------- + trajecory : `tuple` + indices, [[values_1,error_codes_1], [values_2,error_codes_2], ...] + See leg() for further details + ''' + + if p2 is None: + p2 = np.asarray(p1, float) + p1 = self.get_body_part_pos_relative_to_hip('lankle' if is_left else 'rankle') + else: + p1 = np.asarray(p1, float) + p2 = np.asarray(p2, float) + + vec = (p2 - p1) / resolution + + + hip_points = [p1 + vec * i for i in range(1,resolution+1)] + interpolation = [self.leg(p, foot_ori3d, is_left, dynamic_pose) for p in hip_points] + + indices = [2,4,6,8,10,12] if is_left else [3,5,7,9,11,13] + + last_joint_values = self.robot.joints_position[indices[0:4]] #exclude feet joints to compute ankle trajectory + next_step = interpolation[0] + trajectory = [] + + for p in interpolation[1:-1]: + if np.any(np.abs(p[1][0:4]-last_joint_values) > 7.03): + trajectory.append(next_step[1:3]) + last_joint_values = next_step[1][0:4] + next_step = p + else: + next_step = p + + trajectory.append(interpolation[-1][1:3]) + + return indices, trajectory + + + + def leg(self, ankle_pos3d, foot_ori3d, is_left:bool, dynamic_pose:bool): + ''' + Compute inverse kinematics for the leg, considering as input the relative 3D position of the ankle and 3D orientation* of the foot + *the yaw can be controlled directly, but the pitch and roll are biases (see below) + + Parameters + ---------- + ankle_pos3d : array_like, length 3 + (x,y,z) position of ankle in 3D, relative to the center of both hip joints + foot_ori3d : array_like, length 3 + rotation around x,y,z (rotation around x & y are biases, relative to a vertical pose, or dynamic pose, if enabled) + is_left : `bool` + set to True to select left leg, False to select right leg + dynamic_pose : `bool` + enable dynamic feet rotation to be parallel to the ground, based on IMU + + Returns + ------- + indices : `list` + indices of computed joints + values : `list` + values of computed joints + error_codes : `list` + list of error codes + Error codes: + (-1) Foot is too far (unreachable) + (x) Joint x is out of range + ''' + + error_codes = [] + leg_y_dev, upper_leg_height, upper_leg_depth, lower_leg_len, knee_extra_angle, _ = self.NAO_SPECS + sign = -1 if is_left else 1 + + # Then we translate to origin of leg by shifting the y coordinate + ankle_pos3d = np.asarray(ankle_pos3d) + (0,sign*leg_y_dev,0) + + # First we rotate the leg, then we rotate the coordinates to abstract from the rotation + ankle_pos3d = Matrix_3x3().rotate_z_deg(-foot_ori3d[2]).multiply(ankle_pos3d) + + # Use geometric solution to compute knee angle and foot pitch + dist = np.linalg.norm(ankle_pos3d) #dist hip <-> ankle + sq_dist = dist * dist + sq_upper_leg_h = upper_leg_height * upper_leg_height + sq_lower_leg_l = lower_leg_len * lower_leg_len + sq_upper_leg_l = upper_leg_depth * upper_leg_depth + sq_upper_leg_h + upper_leg_len = sqrt(sq_upper_leg_l) + knee = M.acos((sq_upper_leg_l + sq_lower_leg_l - sq_dist)/(2 * upper_leg_len * lower_leg_len)) + knee_extra_angle # Law of cosines + foot = M.acos((sq_lower_leg_l + sq_dist - sq_upper_leg_l)/(2 * lower_leg_len * dist)) # foot perpendicular to vec(origin->ankle_pos) + + # Check if target is reachable + if dist > upper_leg_len + lower_leg_len: + error_codes.append(-1) + + # Knee and foot + knee_angle = pi - knee + foot_pitch = foot - atan(ankle_pos3d[0] / np.linalg.norm(ankle_pos3d[1:3])) + foot_roll = atan(ankle_pos3d[1] / min(-0.05, ankle_pos3d[2])) * -sign # avoid instability of foot roll (not relevant above -0.05m) + + # Raw hip angles if all joints were straightforward + raw_hip_yaw = foot_ori3d[2] + raw_hip_pitch = foot_pitch - knee_angle + raw_hip_roll = -sign * foot_roll + + # Rotate 45deg due to yaw joint orientation, then rotate yaw, roll and pitch + m = Matrix_3x3().rotate_y_rad(raw_hip_pitch).rotate_x_rad(raw_hip_roll).rotate_z_deg(raw_hip_yaw).rotate_x_deg(-45*sign) + + # Get actual hip angles considering the yaw joint orientation + hip_roll = (pi/4) - (sign * asin(m.m[1,2])) #Add pi/4 due to 45deg rotation + hip_pitch = - atan2(m.m[0,2],m.m[2,2]) + hip_yaw = sign * atan2(m.m[1,0],m.m[1,1]) + + # Convert rad to deg + values = np.array([hip_yaw,hip_roll,hip_pitch,-knee_angle,foot_pitch,foot_roll]) * 57.2957795 #rad to deg + + # Set feet rotation bias (based on vertical pose, or dynamic_pose) + values[4] -= foot_ori3d[1] + values[5] -= foot_ori3d[0] * sign + + indices = [2,4,6,8,10,12] if is_left else [3,5,7,9,11,13] + + if dynamic_pose: + + # Rotation of torso in relation to foot + m : Matrix_3x3 = Matrix_3x3.from_rotation_deg((self.robot.imu_torso_roll, self.robot.imu_torso_pitch, 0)) + m.rotate_z_deg(foot_ori3d[2], True) + + roll = m.get_roll_deg() + pitch = m.get_pitch_deg() + + # Simple balance algorithm + correction = 1 #correction to motivate a vertical torso (in degrees) + roll = 0 if abs(roll) < correction else roll - np.copysign(correction,roll) + pitch = 0 if abs(pitch) < correction else pitch - np.copysign(correction,pitch) + + values[4] += pitch + values[5] += roll * sign + + + # Check and limit range of joints + for i in range(len(indices)): + if values[i] < self.robot.joints_info[indices[i]].min or values[i] > self.robot.joints_info[indices[i]].max: + error_codes.append(indices[i]) + values[i] = np.clip(values[i], self.robot.joints_info[indices[i]].min, self.robot.joints_info[indices[i]].max) + + + return indices, values, error_codes + diff --git a/math_ops/Math_Ops.py b/math_ops/Math_Ops.py new file mode 100644 index 0000000..ddbf4f3 --- /dev/null +++ b/math_ops/Math_Ops.py @@ -0,0 +1,361 @@ +from math import acos, asin, atan2, cos, pi, sin, sqrt +import numpy as np +import sys + +try: + GLOBAL_DIR = sys._MEIPASS # temporary folder with libs & data files +except: + GLOBAL_DIR = "." + + +class Math_Ops(): + ''' + This class provides general mathematical operations that are not directly available through numpy + ''' + + @staticmethod + def deg_sph2cart(spherical_vec): + ''' Converts SimSpark's spherical coordinates in degrees to cartesian coordinates ''' + r = spherical_vec[0] + h = spherical_vec[1] * pi / 180 + v = spherical_vec[2] * pi / 180 + return np.array([r * cos(v) * cos(h), r * cos(v) * sin(h), r * sin(v)]) + + @staticmethod + def deg_sin(deg_angle): + ''' Returns sin of degrees ''' + return sin(deg_angle * pi / 180) + + @staticmethod + def deg_cos(deg_angle): + ''' Returns cos of degrees ''' + return cos(deg_angle * pi / 180) + + @staticmethod + def to_3d(vec_2d, value=0) -> np.ndarray: + ''' Returns new 3d vector from 2d vector ''' + return np.append(vec_2d,value) + + @staticmethod + def to_2d_as_3d(vec_3d) -> np.ndarray: + ''' Returns new 3d vector where the 3rd dimension is zero ''' + vec_2d_as_3d = np.copy(vec_3d) + vec_2d_as_3d[2] = 0 + return vec_2d_as_3d + + @staticmethod + def normalize_vec(vec) -> np.ndarray: + ''' Divides vector by its length ''' + size = np.linalg.norm(vec) + if size == 0: return vec + return vec / size + + @staticmethod + def get_active_directory(dir:str) -> str: + global GLOBAL_DIR + return GLOBAL_DIR + dir + + @staticmethod + def acos(val): + ''' arccosine function that limits input ''' + return acos( np.clip(val,-1,1) ) + + @staticmethod + def asin(val): + ''' arcsine function that limits input ''' + return asin( np.clip(val,-1,1) ) + + @staticmethod + def normalize_deg(val): + ''' normalize val in range [-180,180[ ''' + return (val + 180.0) % 360 - 180 + + @staticmethod + def normalize_rad(val): + ''' normalize val in range [-pi,pi[ ''' + return (val + pi) % (2*pi) - pi + + @staticmethod + def deg_to_rad(val): + ''' convert degrees to radians ''' + return val * 0.01745329251994330 + + @staticmethod + def rad_to_deg(val): + ''' convert radians to degrees ''' + return val * 57.29577951308232 + + @staticmethod + def vector_angle(vector, is_rad=False): + ''' angle (degrees or radians) of 2D vector ''' + if is_rad: + return atan2(vector[1], vector[0]) + else: + return atan2(vector[1], vector[0]) * 180 / pi + + @staticmethod + def vectors_angle(vec1, vec2, is_rad=False): + ''' get angle between vectors (degrees or radians) ''' + ang_rad = acos(np.dot(Math_Ops.normalize_vec(vec1),Math_Ops.normalize_vec(vec2))) + return ang_rad if is_rad else ang_rad * 180 / pi + + @staticmethod + def vector_from_angle(angle, is_rad=False): + ''' unit vector with direction given by `angle` ''' + if is_rad: + return np.array([cos(angle), sin(angle)], float) + else: + return np.array([Math_Ops.deg_cos(angle), Math_Ops.deg_sin(angle)], float) + + @staticmethod + def target_abs_angle(pos2d, target, is_rad=False): + ''' angle (degrees or radians) of vector (target-pos2d) ''' + if is_rad: + return atan2(target[1]-pos2d[1], target[0]-pos2d[0]) + else: + return atan2(target[1]-pos2d[1], target[0]-pos2d[0]) * 180 / pi + + @staticmethod + def target_rel_angle(pos2d, ori, target, is_rad=False): + ''' relative angle (degrees or radians) of target if we're located at 'pos2d' with orientation 'ori' (degrees or radians) ''' + if is_rad: + return Math_Ops.normalize_rad( atan2(target[1]-pos2d[1], target[0]-pos2d[0]) - ori ) + else: + return Math_Ops.normalize_deg( atan2(target[1]-pos2d[1], target[0]-pos2d[0]) * 180 / pi - ori ) + + @staticmethod + def rotate_2d_vec(vec, angle, is_rad=False): + ''' rotate 2D vector anticlockwise around the origin by `angle` ''' + cos_ang = cos(angle) if is_rad else cos(angle * pi / 180) + sin_ang = sin(angle) if is_rad else sin(angle * pi / 180) + return np.array([cos_ang*vec[0]-sin_ang*vec[1], sin_ang*vec[0]+cos_ang*vec[1]]) + + @staticmethod + def distance_point_to_line(p:np.ndarray, a:np.ndarray, b:np.ndarray): + ''' + Distance between point p and 2d line 'ab' (and side where p is) + + Parameters + ---------- + a : ndarray + 2D point that defines line + b : ndarray + 2D point that defines line + p : ndarray + 2D point + + Returns + ------- + distance : float + distance between line and point + side : str + if we are at a, looking at b, p may be at our "left" or "right" + ''' + line_len = np.linalg.norm(b-a) + + if line_len == 0: # assumes vertical line + dist = sdist = np.linalg.norm(p-a) + else: + sdist = np.cross(b-a,p-a)/line_len + dist = abs(sdist) + + return dist, "left" if sdist>0 else "right" + + @staticmethod + def distance_point_to_segment(p:np.ndarray, a:np.ndarray, b:np.ndarray): + ''' Distance from point p to 2d line segment 'ab' ''' + + ap = p-a + ab = b-a + + ad = Math_Ops.vector_projection(ap,ab) + + # Is d in ab? We can find k in (ad = k * ab) without computing any norm + # we use the largest dimension of ab to avoid division by 0 + k = ad[0]/ab[0] if abs(ab[0])>abs(ab[1]) else ad[1]/ab[1] + + if k <= 0: return np.linalg.norm(ap) + elif k >= 1: return np.linalg.norm(p-b) + else: return np.linalg.norm(p-(ad + a)) # p-d + + @staticmethod + def distance_point_to_ray(p:np.ndarray, ray_start:np.ndarray, ray_direction:np.ndarray): + ''' Distance from point p to 2d ray ''' + + rp = p-ray_start + rd = Math_Ops.vector_projection(rp,ray_direction) + + # Is d in ray? We can find k in (rd = k * ray_direction) without computing any norm + # we use the largest dimension of ray_direction to avoid division by 0 + k = rd[0]/ray_direction[0] if abs(ray_direction[0])>abs(ray_direction[1]) else rd[1]/ray_direction[1] + + if k <= 0: return np.linalg.norm(rp) + else: return np.linalg.norm(p-(rd + ray_start)) # p-d + + @staticmethod + def closest_point_on_ray_to_point(p:np.ndarray, ray_start:np.ndarray, ray_direction:np.ndarray): + ''' Point on ray closest to point p ''' + + rp = p-ray_start + rd = Math_Ops.vector_projection(rp,ray_direction) + + # Is d in ray? We can find k in (rd = k * ray_direction) without computing any norm + # we use the largest dimension of ray_direction to avoid division by 0 + k = rd[0]/ray_direction[0] if abs(ray_direction[0])>abs(ray_direction[1]) else rd[1]/ray_direction[1] + + if k <= 0: return ray_start + else: return rd + ray_start + + @staticmethod + def does_circle_intersect_segment(p:np.ndarray, r, a:np.ndarray, b:np.ndarray): + ''' Returns true if circle (center p, radius r) intersect 2d line segment ''' + + ap = p-a + ab = b-a + + ad = Math_Ops.vector_projection(ap,ab) + + # Is d in ab? We can find k in (ad = k * ab) without computing any norm + # we use the largest dimension of ab to avoid division by 0 + k = ad[0]/ab[0] if abs(ab[0])>abs(ab[1]) else ad[1]/ab[1] + + if k <= 0: return np.dot(ap,ap) <= r*r + elif k >= 1: return np.dot(p-b,p-b) <= r*r + + dp = p-(ad + a) + return np.dot(dp,dp) <= r*r + + @staticmethod + def vector_projection(a:np.ndarray, b:np.ndarray): + ''' Vector projection of a onto b ''' + b_dot = np.dot(b,b) + return b * np.dot(a,b) / b_dot if b_dot != 0 else b + + @staticmethod + def do_noncollinear_segments_intersect(a,b,c,d): + ''' + Check if 2d line segment 'ab' intersects with noncollinear 2d line segment 'cd' + Explanation: https://www.geeksforgeeks.org/check-if-two-given-line-segments-intersect/ + ''' + + ccw = lambda a,b,c: (c[1]-a[1]) * (b[0]-a[0]) > (b[1]-a[1]) * (c[0]-a[0]) + return ccw(a,c,d) != ccw(b,c,d) and ccw(a,b,c) != ccw(a,b,d) + + @staticmethod + def intersection_segment_opp_goal(a:np.ndarray, b:np.ndarray): + ''' Computes the intersection point of 2d segment 'ab' and the opponents' goal (front line) ''' + vec_x = b[0]-a[0] + + # Collinear intersections are not accepted + if vec_x == 0: return None + + k = (15.01-a[0])/vec_x + + # No collision + if k < 0 or k > 1: return None + + intersection_pt = a + (b-a) * k + + if -1.01 <= intersection_pt[1] <= 1.01: + return intersection_pt + else: + return None + + @staticmethod + def intersection_circle_opp_goal(p:np.ndarray, r): + ''' + Computes the intersection segment of circle (center p, radius r) and the opponents' goal (front line) + Only the y coordinates are returned since the x coordinates are always equal to 15 + ''' + + x_dev = abs(15-p[0]) + + if x_dev > r: + return None # no intersection with x=15 + + y_dev = sqrt(r*r - x_dev*x_dev) + + p1 = max(p[1] - y_dev, -1.01) + p2 = min(p[1] + y_dev, 1.01) + + if p1 == p2: + return p1 # return the y coordinate of a single intersection point + elif p2 < p1: + return None # no intersection + else: + return p1, p2 # return the y coordinates of the intersection segment + + + @staticmethod + def distance_point_to_opp_goal(p:np.ndarray): + ''' Distance between point 'p' and the opponents' goal (front line) ''' + + if p[1] < -1.01: + return np.linalg.norm( p-(15,-1.01) ) + elif p[1] > 1.01: + return np.linalg.norm( p-(15, 1.01) ) + else: + return abs(15-p[0]) + + + @staticmethod + def circle_line_segment_intersection(circle_center, circle_radius, pt1, pt2, full_line=True, tangent_tol=1e-9): + """ Find the points at which a circle intersects a line-segment. This can happen at 0, 1, or 2 points. + + :param circle_center: The (x, y) location of the circle center + :param circle_radius: The radius of the circle + :param pt1: The (x, y) location of the first point of the segment + :param pt2: The (x, y) location of the second point of the segment + :param full_line: True to find intersections along full line - not just in the segment. False will just return intersections within the segment. + :param tangent_tol: Numerical tolerance at which we decide the intersections are close enough to consider it a tangent + :return Sequence[Tuple[float, float]]: A list of length 0, 1, or 2, where each element is a point at which the circle intercepts a line segment. + + Note: We follow: http://mathworld.wolfram.com/Circle-LineIntersection.html + """ + + (p1x, p1y), (p2x, p2y), (cx, cy) = pt1, pt2, circle_center + (x1, y1), (x2, y2) = (p1x - cx, p1y - cy), (p2x - cx, p2y - cy) + dx, dy = (x2 - x1), (y2 - y1) + dr = (dx ** 2 + dy ** 2)**.5 + big_d = x1 * y2 - x2 * y1 + discriminant = circle_radius ** 2 * dr ** 2 - big_d ** 2 + + if discriminant < 0: # No intersection between circle and line + return [] + else: # There may be 0, 1, or 2 intersections with the segment + intersections = [ + (cx + (big_d * dy + sign * (-1 if dy < 0 else 1) * dx * discriminant**.5) / dr ** 2, + cy + (-big_d * dx + sign * abs(dy) * discriminant**.5) / dr ** 2) + for sign in ((1, -1) if dy < 0 else (-1, 1))] # This makes sure the order along the segment is correct + if not full_line: # If only considering the segment, filter out intersections that do not fall within the segment + fraction_along_segment = [ + (xi - p1x) / dx if abs(dx) > abs(dy) else (yi - p1y) / dy for xi, yi in intersections] + intersections = [pt for pt, frac in zip( + intersections, fraction_along_segment) if 0 <= frac <= 1] + # If line is tangent to circle, return just one point (as both intersections have same location) + if len(intersections) == 2 and abs(discriminant) <= tangent_tol: + return [intersections[0]] + else: + return intersections + + + + + # adapted from https://stackoverflow.com/questions/3252194/numpy-and-line-intersections + @staticmethod + def get_line_intersection(a1, a2, b1, b2): + """ + Returns the point of intersection of the lines passing through a2,a1 and b2,b1. + a1: [x, y] a point on the first line + a2: [x, y] another point on the first line + b1: [x, y] a point on the second line + b2: [x, y] another point on the second line + """ + s = np.vstack([a1,a2,b1,b2]) # s for stacked + h = np.hstack((s, np.ones((4, 1)))) # h for homogeneous + l1 = np.cross(h[0], h[1]) # get first line + l2 = np.cross(h[2], h[3]) # get second line + x, y, z = np.cross(l1, l2) # point of intersection + if z == 0: # lines are parallel + return np.array([float('inf'), float('inf')]) + return np.array([x/z, y/z],float) diff --git a/math_ops/Matrix_3x3.py b/math_ops/Matrix_3x3.py new file mode 100644 index 0000000..998c8d4 --- /dev/null +++ b/math_ops/Matrix_3x3.py @@ -0,0 +1,351 @@ +from math import asin, atan2, pi, sqrt +import numpy as np +import math + +class Matrix_3x3(): + + def __init__(self, matrix = None) -> None: + ''' + Constructor examples: + a = Matrix_3x3( ) # create identity matrix + b = Matrix_3x3( [[1,1,1],[2,2,2],[3,3,3]] ) # manually initialize matrix + c = Matrix_3x3( [1,1,1,2,2,2,3,3,3] ) # manually initialize matrix + d = Matrix_3x3( b ) # copy constructor + ''' + if matrix is None: + self.m = np.identity(3) + elif type(matrix) == Matrix_3x3: + self.m = np.copy(matrix.m) + else: + self.m = np.asarray(matrix) + self.m.shape = (3,3) #reshape if needed, throw error if impossible + + + self.rotation_shortcuts={(1,0,0):self.rotate_x_rad, (-1, 0, 0):self._rotate_x_neg_rad, + (0,1,0):self.rotate_y_rad, ( 0,-1, 0):self._rotate_y_neg_rad, + (0,0,1):self.rotate_z_rad, ( 0, 0,-1):self._rotate_z_neg_rad} + + @classmethod + def from_rotation_deg(cls, euler_vec): + ''' + Create rotation matrix from Euler angles, in degrees. + Rotation order: RotZ*RotY*RotX + + Parameters + ---------- + euler_vec : array_like, length 3 + vector with Euler angles (x,y,z) aka (roll, pitch, yaw) + + Example + ---------- + Matrix_3x3.from_rotation_deg((roll,pitch,yaw)) # Creates: RotZ(yaw)*RotY(pitch)*RotX(roll) + ''' + mat = cls().rotate_z_deg(euler_vec[2], True).rotate_y_deg(euler_vec[1], True).rotate_x_deg(euler_vec[0], True) + return mat + + def get_roll_deg(self): + ''' Get angle around the x-axis in degrees, Rotation order: RotZ*RotY*RotX=Rot ''' + if self.m[2,1] == 0 and self.m[2,2] == 0: + return 180 + return atan2(self.m[2,1], self.m[2,2]) * 180 / pi + + def get_pitch_deg(self): + ''' Get angle around the y-axis in degrees, Rotation order: RotZ*RotY*RotX=Rot ''' + return atan2(-self.m[2,0], sqrt(self.m[2,1]*self.m[2,1] + self.m[2,2]*self.m[2,2])) * 180 / pi + + def get_yaw_deg(self): + ''' Get angle around the z-axis in degrees, Rotation order: RotZ*RotY*RotX=Rot ''' + if self.m[1,0] == 0 and self.m[0,0] == 0: + return atan2(self.m[0,1], self.m[1,1]) * 180 / pi + return atan2(self.m[1,0], self.m[0,0]) * 180 / pi + + def get_inclination_deg(self): + ''' Get inclination of z-axis in relation to reference z-axis ''' + return 90 - (asin(self.m[2,2]) * 180 / pi) + + + def rotate_deg(self, rotation_vec, rotation_deg, in_place=False): + ''' + Rotates the current rotation matrix + + Parameters + ---------- + rotation_vec : array_like, length 3 + rotation vector + rotation_rad : float + rotation in degrees + in_place: bool, optional + * True: the internal matrix is changed in-place (default) + * False: a new matrix is returned and the current one is not changed + + Returns + ------- + result : Matrix_3x3 + self is returned if in_place is True + ''' + return self.rotate_rad(rotation_vec, rotation_deg * (pi/180) , in_place) + + + def rotate_rad(self, rotation_vec, rotation_rad, in_place=False): + ''' + Rotates the current rotation matrix + + Parameters + ---------- + rotation_vec : array_like, length 3 + rotation vector + rotation_rad : float + rotation in radians + in_place: bool, optional + * True: the internal matrix is changed in-place (default) + * False: a new matrix is returned and the current one is not changed + + Returns + ------- + result : Matrix_3x3 + self is returned if in_place is True + ''' + + if rotation_rad == 0: return + + shortcut = self.rotation_shortcuts.get(tuple(a for a in rotation_vec)) + if shortcut: + return shortcut(rotation_rad, in_place) + + c = math.cos(rotation_rad) + c1 = 1 - c + s = math.sin(rotation_rad) + x = rotation_vec[0] + y = rotation_vec[1] + z = rotation_vec[2] + xxc1 = x * x * c1 + yyc1 = y * y * c1 + zzc1 = z * z * c1 + xyc1 = x * y * c1 + xzc1 = x * z * c1 + yzc1 = y * z * c1 + xs = x * s + ys = y * s + zs = z * s + + mat = np.array([ + [xxc1 + c, xyc1 - zs, xzc1 + ys], + [xyc1 + zs, yyc1 + c, yzc1 - xs], + [xzc1 - ys, yzc1 + xs, zzc1 + c]]) + + return self.multiply(mat, in_place) + + + def _rotate_x_neg_rad(self, rotation_rad, in_place=False): + self.rotate_x_rad(-rotation_rad, in_place) + + def _rotate_y_neg_rad(self, rotation_rad, in_place=False): + self.rotate_y_rad(-rotation_rad, in_place) + + def _rotate_z_neg_rad(self, rotation_rad, in_place=False): + self.rotate_z_rad(-rotation_rad, in_place) + + def rotate_x_rad(self, rotation_rad, in_place=False): + ''' + Rotates the current rotation matrix around the x-axis + + Parameters + ---------- + rotation_rad : float + rotation in radians + in_place: bool, optional + * True: the internal matrix is changed in-place (default) + * False: a new matrix is returned and the current one is not changed + + Returns + ------- + result : Matrix_3x3 + self is returned if in_place is True + ''' + if rotation_rad == 0: + return self if in_place else Matrix_3x3(self) + + c = math.cos(rotation_rad) + s = math.sin(rotation_rad) + + mat = np.array([ + [1, 0, 0], + [0, c,-s], + [0, s, c]]) + + return self.multiply(mat, in_place) + + def rotate_y_rad(self, rotation_rad, in_place=False): + ''' + Rotates the current rotation matrix around the y-axis + + Parameters + ---------- + rotation_rad : float + rotation in radians + in_place: bool, optional + * True: the internal matrix is changed in-place (default) + * False: a new matrix is returned and the current one is not changed + + Returns + ------- + result : Matrix_3x3 + self is returned if in_place is True + ''' + if rotation_rad == 0: + return self if in_place else Matrix_3x3(self) + + c = math.cos(rotation_rad) + s = math.sin(rotation_rad) + + mat = np.array([ + [ c, 0, s], + [ 0, 1, 0], + [-s, 0, c]]) + + return self.multiply(mat, in_place) + + def rotate_z_rad(self, rotation_rad, in_place=False): + ''' + Rotates the current rotation matrix around the z-axis + + Parameters + ---------- + rotation_rad : float + rotation in radians + in_place: bool, optional + * True: the internal matrix is changed in-place (default) + * False: a new matrix is returned and the current one is not changed + + Returns + ------- + result : Matrix_3x3 + self is returned if in_place is True + ''' + if rotation_rad == 0: + return self if in_place else Matrix_3x3(self) + + c = math.cos(rotation_rad) + s = math.sin(rotation_rad) + + mat = np.array([ + [ c,-s, 0], + [ s, c, 0], + [ 0, 0, 1]]) + + return self.multiply(mat, in_place) + + def rotate_x_deg(self, rotation_deg, in_place=False): + ''' + Rotates the current rotation matrix around the x-axis + + Parameters + ---------- + rotation_rad : float + rotation in degrees + in_place: bool, optional + * True: the internal matrix is changed in-place (default) + * False: a new matrix is returned and the current one is not changed + + Returns + ------- + result : Matrix_3x3 + self is returned if in_place is True + ''' + return self.rotate_x_rad(rotation_deg * (pi/180), in_place) + + def rotate_y_deg(self, rotation_deg, in_place=False): + ''' + Rotates the current rotation matrix around the y-axis + + Parameters + ---------- + rotation_rad : float + rotation in degrees + in_place: bool, optional + * True: the internal matrix is changed in-place (default) + * False: a new matrix is returned and the current one is not changed + + Returns + ------- + result : Matrix_3x3 + self is returned if in_place is True + ''' + return self.rotate_y_rad(rotation_deg * (pi/180), in_place) + + def rotate_z_deg(self, rotation_deg, in_place=False): + ''' + Rotates the current rotation matrix around the z-axis + + Parameters + ---------- + rotation_rad : float + rotation in degrees + in_place: bool, optional + * True: the internal matrix is changed in-place (default) + * False: a new matrix is returned and the current one is not changed + + Returns + ------- + result : Matrix_3x3 + self is returned if in_place is True + ''' + return self.rotate_z_rad(rotation_deg * (pi/180), in_place) + + def invert(self, in_place=False): + ''' + Inverts the current rotation matrix + + Parameters + ---------- + in_place: bool, optional + * True: the internal matrix is changed in-place (default) + * False: a new matrix is returned and the current one is not changed + + Returns + ------- + result : Matrix_3x3 + self is returned if in_place is True + ''' + + if in_place: + self.m = np.linalg.inv(self.m) + return self + else: + return Matrix_3x3(np.linalg.inv(self.m)) + + def multiply(self,mat, in_place=False, reverse_order=False): + ''' + Multiplies the current rotation matrix by mat + + Parameters + ---------- + mat : Matrix_3x3 or array_like + multiplier matrix or 3D vector + in_place: bool, optional + - True: the internal matrix is changed in-place + - False: a new matrix is returned and the current one is not changed (default) + reverse_order: bool, optional + - False: self * mat + - True: mat * self + + Returns + ------- + result : Matrix_3x3 | array_like + Matrix_3x3 is returned if mat is a matrix (self is returned if in_place is True); + a 3D vector is returned if mat is a vector + ''' + # get array from matrix object or convert to numpy array (if needed) + mat = mat.m if type(mat) == Matrix_3x3 else np.asarray(mat) + + a,b = (mat, self.m) if reverse_order else (self.m, mat) + + if mat.ndim == 1: + return np.matmul(a, b) # multiplication by 3D vector + elif in_place: + np.matmul(a, b, self.m) # multiplication by matrix, in place + return self + else: # multiplication by matrix, return new Matrix_3x3 + return Matrix_3x3(np.matmul(a, b)) + + diff --git a/math_ops/Matrix_4x4.py b/math_ops/Matrix_4x4.py new file mode 100644 index 0000000..07509b9 --- /dev/null +++ b/math_ops/Matrix_4x4.py @@ -0,0 +1,441 @@ +from math import asin, atan2, pi, sqrt +from math_ops.Math_Ops import Math_Ops as M +from math_ops.Matrix_3x3 import Matrix_3x3 +import numpy as np +import math + +class Matrix_4x4(): + + def __init__(self, matrix = None) -> None: + ''' + Constructor examples: + a = Matrix_4x4( ) # create identity matrix + b = Matrix_4x4( [[1,1,1,1],[2,2,2,2],[3,3,3,3],[4,4,4,4]] ) # manually initialize matrix + c = Matrix_4x4( [1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4] ) # manually initialize matrix + d = Matrix_4x4( b ) # copy constructor + ''' + if matrix is None: + self.m = np.identity(4) + elif type(matrix) == Matrix_4x4: + self.m = np.copy(matrix.m) + elif type(matrix) == Matrix_3x3: + self.m = np.identity(4) + self.m[0:3,0:3] = matrix.m + else: + self.m = np.asarray(matrix) + self.m.shape = (4,4) #reshape if needed, throw error if impossible + + + @classmethod + def from_translation(cls, translation_vec): + ''' + Create transformation matrix from translation_vec translation + e.g. Matrix_4x4.from_translation((a,b,c)) + output: [[1,0,0,a],[0,1,0,b],[0,0,1,c],[0,0,0,1]] + ''' + mat = np.identity(4) + mat[0:3,3] = translation_vec + return cls(mat) + + @classmethod + def from_3x3_and_translation(cls, mat3x3:Matrix_3x3, translation_vec): + ''' + Create transformation matrix from rotation matrix (3x3) and translation + e.g. Matrix_4x4.from_3x3_and_translation(r,(a,b,c)) + output: [[r00,r01,r02,a],[r10,r11,r12,b],[r20,r21,r22,c],[0,0,0,1]] + ''' + mat = np.identity(4) + mat[0:3,0:3] = mat3x3.m + mat[0:3,3] = translation_vec + return cls(mat) + + def translate(self, translation_vec, in_place=False): + ''' + Translates the current transformation matrix + + Parameters + ---------- + translation_vec : array_like, length 3 + translation vector + in_place: bool, optional + * True: the internal matrix is changed in-place + * False: a new matrix is returned and the current one is not changed + + Returns + ------- + result : Matrix_4x4 + self is returned if in_place is True + ''' + vec = np.array([*translation_vec,1])# conversion to 4D vector + np.matmul(self.m, vec, out=vec) # compute only 4th column + + if in_place: + self.m[:,3] = vec + return self + else: + ret = Matrix_4x4(self.m) + ret.m[:,3] = vec + return ret + + + def get_translation(self): + ''' Get translation vector (x,y,z) ''' + return self.m[0:3,3] # return view + + def get_x(self): + return self.m[0,3] + + def get_y(self): + return self.m[1,3] + + def get_z(self): + return self.m[2,3] + + def get_rotation_4x4(self): + ''' Get Matrix_4x4 without translation ''' + mat = Matrix_4x4(self) + mat.m[0:3,3] = 0 + return mat + + def get_rotation(self): + ''' Get rotation Matrix_3x3 ''' + return Matrix_3x3(self.m[0:3,0:3]) + + def get_distance(self): + ''' Get translation vector length ''' + return np.linalg.norm(self.m[0:3,3]) + + def get_roll_deg(self): + ''' Get angle around the x-axis in degrees, Rotation order: RotZ*RotY*RotX=Rot ''' + if self.m[2,1] == 0 and self.m[2,2] == 0: + return 180 + return atan2(self.m[2,1], self.m[2,2]) * 180 / pi + + def get_pitch_deg(self): + ''' Get angle around the y-axis in degrees, Rotation order: RotZ*RotY*RotX=Rot ''' + return atan2(-self.m[2,0], sqrt(self.m[2,1]*self.m[2,1] + self.m[2,2]*self.m[2,2])) * 180 / pi + + def get_yaw_deg(self): + ''' Get angle around the z-axis in degrees, Rotation order: RotZ*RotY*RotX=Rot ''' + if self.m[1,0] == 0 and self.m[0,0] == 0: + return atan2(self.m[0,1], self.m[1,1]) * 180 / pi + return atan2(self.m[1,0], self.m[0,0]) * 180 / pi + + def get_inclination_deg(self): + ''' Get inclination of z-axis in relation to reference z-axis ''' + return 90 - (asin(np.clip(self.m[2,2],-1,1)) * 180 / pi) + + def rotate_deg(self, rotation_vec, rotation_deg, in_place=False): + ''' + Rotates the current transformation matrix + + Parameters + ---------- + rotation_vec : array_like, length 3 + rotation vector + rotation_rad : float + rotation in degrees + in_place: bool, optional + * True: the internal matrix is changed in-place (default) + * False: a new matrix is returned and the current one is not changed + + Returns + ------- + result : Matrix_4x4 + self is returned if in_place is True + ''' + return self.rotate_rad(rotation_vec, rotation_deg * (pi/180) , in_place) + + + def rotate_rad(self, rotation_vec, rotation_rad, in_place=False): + ''' + Rotates the current transformation matrix + + Parameters + ---------- + rotation_vec : array_like, length 3 + rotation vector + rotation_rad : float + rotation in radians + in_place: bool, optional + * True: the internal matrix is changed in-place (default) + * False: a new matrix is returned and the current one is not changed + + Returns + ------- + result : Matrix_4x4 + self is returned if in_place is True + ''' + + if rotation_rad == 0: + return self if in_place else Matrix_4x4(self) + + # shortcuts for rotation around 1 axis + if rotation_vec[0]==0: + if rotation_vec[1]==0: + if rotation_vec[2]==1: + return self.rotate_z_rad(rotation_rad, in_place) + elif rotation_vec[2]==-1: + return self.rotate_z_rad(-rotation_rad, in_place) + elif rotation_vec[2]==0: + if rotation_vec[1]==1: + return self.rotate_y_rad(rotation_rad, in_place) + elif rotation_vec[1]==-1: + return self.rotate_y_rad(-rotation_rad, in_place) + elif rotation_vec[1]==0 and rotation_vec[2]==0: + if rotation_vec[0]==1: + return self.rotate_x_rad(rotation_rad, in_place) + elif rotation_vec[0]==-1: + return self.rotate_x_rad(-rotation_rad, in_place) + + c = math.cos(rotation_rad) + c1 = 1 - c + s = math.sin(rotation_rad) + x = rotation_vec[0] + y = rotation_vec[1] + z = rotation_vec[2] + xxc1 = x * x * c1 + yyc1 = y * y * c1 + zzc1 = z * z * c1 + xyc1 = x * y * c1 + xzc1 = x * z * c1 + yzc1 = y * z * c1 + xs = x * s + ys = y * s + zs = z * s + + mat = np.array([ + [xxc1 + c, xyc1 - zs, xzc1 + ys, 0], + [xyc1 + zs, yyc1 + c, yzc1 - xs, 0], + [xzc1 - ys, yzc1 + xs, zzc1 + c, 0], + [0, 0, 0, 1]]) + + return self.multiply(mat, in_place) + + + def rotate_x_rad(self, rotation_rad, in_place=False): + ''' + Rotates the current transformation matrix around the x-axis + + Parameters + ---------- + rotation_rad : float + rotation in radians + in_place: bool, optional + * True: the internal matrix is changed in-place (default) + * False: a new matrix is returned and the current one is not changed + + Returns + ------- + result : Matrix_4x4 + self is returned if in_place is True + ''' + if rotation_rad == 0: + return self if in_place else Matrix_4x4(self) + + c = math.cos(rotation_rad) + s = math.sin(rotation_rad) + + mat = np.array([ + [1, 0, 0, 0], + [0, c,-s, 0], + [0, s, c, 0], + [0, 0, 0, 1]]) + + return self.multiply(mat, in_place) + + def rotate_y_rad(self, rotation_rad, in_place=False): + ''' + Rotates the current transformation matrix around the y-axis + + Parameters + ---------- + rotation_rad : float + rotation in radians + in_place: bool, optional + * True: the internal matrix is changed in-place (default) + * False: a new matrix is returned and the current one is not changed + + Returns + ------- + result : Matrix_4x4 + self is returned if in_place is True + ''' + if rotation_rad == 0: + return self if in_place else Matrix_4x4(self) + + c = math.cos(rotation_rad) + s = math.sin(rotation_rad) + + mat = np.array([ + [ c, 0, s, 0], + [ 0, 1, 0, 0], + [-s, 0, c, 0], + [ 0, 0, 0, 1]]) + + return self.multiply(mat, in_place) + + def rotate_z_rad(self, rotation_rad, in_place=False): + ''' + Rotates the current transformation matrix around the z-axis + + Parameters + ---------- + rotation_rad : float + rotation in radians + in_place: bool, optional + * True: the internal matrix is changed in-place (default) + * False: a new matrix is returned and the current one is not changed + + Returns + ------- + result : Matrix_4x4 + self is returned if in_place is True + ''' + if rotation_rad == 0: + return self if in_place else Matrix_4x4(self) + + c = math.cos(rotation_rad) + s = math.sin(rotation_rad) + + mat = np.array([ + [ c,-s, 0, 0], + [ s, c, 0, 0], + [ 0, 0, 1, 0], + [ 0, 0, 0, 1]]) + + return self.multiply(mat, in_place) + + def rotate_x_deg(self, rotation_deg, in_place=False): + ''' + Rotates the current transformation matrix around the x-axis + + Parameters + ---------- + rotation_rad : float + rotation in degrees + in_place: bool, optional + * True: the internal matrix is changed in-place (default) + * False: a new matrix is returned and the current one is not changed + + Returns + ------- + result : Matrix_4x4 + self is returned if in_place is True + ''' + return self.rotate_x_rad(rotation_deg * (pi/180), in_place) + + def rotate_y_deg(self, rotation_deg, in_place=False): + ''' + Rotates the current transformation matrix around the y-axis + + Parameters + ---------- + rotation_rad : float + rotation in degrees + in_place: bool, optional + * True: the internal matrix is changed in-place (default) + * False: a new matrix is returned and the current one is not changed + + Returns + ------- + result : Matrix_4x4 + self is returned if in_place is True + ''' + return self.rotate_y_rad(rotation_deg * (pi/180), in_place) + + def rotate_z_deg(self, rotation_deg, in_place=False): + ''' + Rotates the current transformation matrix around the z-axis + + Parameters + ---------- + rotation_rad : float + rotation in degrees + in_place: bool, optional + * True: the internal matrix is changed in-place (default) + * False: a new matrix is returned and the current one is not changed + + Returns + ------- + result : Matrix_4x4 + self is returned if in_place is True + ''' + return self.rotate_z_rad(rotation_deg * (pi/180), in_place) + + def invert(self, in_place=False): + ''' + Inverts the current transformation matrix + + Parameters + ---------- + in_place: bool, optional + * True: the internal matrix is changed in-place (default) + * False: a new matrix is returned and the current one is not changed + + Returns + ------- + result : Matrix_4x4 + self is returned if in_place is True + ''' + + if in_place: + self.m = np.linalg.inv(self.m) + return self + else: + return Matrix_4x4(np.linalg.inv(self.m)) + + def multiply(self,mat, in_place=False): + ''' + Multiplies the current transformation matrix by mat + + Parameters + ---------- + mat : Matrix_4x4 or array_like + multiplier matrix or 3D vector + in_place: bool, optional + * True: the internal matrix is changed in-place (default) + * False: a new matrix is returned and the current one is not changed (if mat is a 4x4 matrix) + + Returns + ------- + result : Matrix_4x4 | array_like + Matrix_4x4 is returned if mat is a matrix (self is returned if in_place is True); + a 3D vector is returned if mat is a vector + ''' + if type(mat) == Matrix_4x4: + mat = mat.m + else: + mat = np.asarray(mat) # conversion to array, if needed + if mat.ndim == 1: # multiplication by 3D vector + vec = np.append(mat,1) # conversion to 4D vector + return np.matmul(self.m, vec)[0:3] # conversion to 3D vector + + if in_place: + np.matmul(self.m, mat, self.m) + return self + else: + return Matrix_4x4(np.matmul(self.m, mat)) + + def __call__(self,mat, is_spherical=False): + ''' + Multiplies the current transformation matrix by mat and returns a new matrix or vector + + Parameters + ---------- + mat : Matrix_4x4 or array_like + multiplier matrix or 3D vector + is_spherical : bool + only relevant if mat is a 3D vector, True if it uses spherical coordinates + + Returns + ------- + result : Matrix_4x4 | array_like + Matrix_4x4 is returned if mat is a matrix; + a 3D vector is returned if mat is a vector + ''' + + if is_spherical and mat.ndim == 1: mat = M.deg_sph2cart(mat) + return self.multiply(mat,False) + + \ No newline at end of file diff --git a/math_ops/Neural_Network.py b/math_ops/Neural_Network.py new file mode 100644 index 0000000..fec7016 --- /dev/null +++ b/math_ops/Neural_Network.py @@ -0,0 +1,28 @@ +import numpy as np + + +def run_mlp(obs, weights, activation_function="tanh"): + ''' + Run multilayer perceptron using numpy + + Parameters + ---------- + obs : ndarray + float32 array with neural network inputs + weights : list + list of MLP layers of type (bias, kernel) + activation_function : str + activation function for hidden layers + set to "none" to disable + ''' + + obs = obs.astype(np.float32, copy=False) + out = obs + + for w in weights[:-1]: # for each hidden layer + out = np.matmul(w[1],out) + w[0] + if activation_function == "tanh": + np.tanh(out, out=out) + elif activation_function != "none": + raise NotImplementedError + return np.matmul(weights[-1][1],out) + weights[-1][0] # final layer \ No newline at end of file diff --git a/math_ops/__pycache__/Inverse_Kinematics.cpython-313.pyc b/math_ops/__pycache__/Inverse_Kinematics.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fa1ee22f0a21080f4ee7f304b5143d9943c9f503 GIT binary patch literal 12121 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 Hgu;IVq5l3> literal 0 HcmV?d00001 diff --git a/math_ops/__pycache__/Math_Ops.cpython-313.pyc b/math_ops/__pycache__/Math_Ops.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a60c7c6a4e22a43d3e26dce528c2be05c9c8a4eb GIT binary patch literal 19649 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 b__vE2c$W1$r~XbN3+q$XNNz!?Yl&%ud| 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 literal 0 HcmV?d00001 diff --git a/math_ops/__pycache__/Neural_Network.cpython-313.pyc b/math_ops/__pycache__/Neural_Network.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..95b4c88c02a13fb7b66960a2e0553df90803cf41 GIT binary patch literal 1177 zcmZuw&rcIU6rSBKEpBO};IDWf15rbX*hHhI)o4r=G)hCdAsRI{+wMSDcW2g_S)1NC zA|8OmA9$;td1JbR3533? zVB7SLvvm-h=g2~qb^~$EN?7_4^g!eKtd=u2)uwVCuw6@nr{b-%n!-(^3e3Ch?lwEB z7`xXHoMh<*odT97rqzjtfd;Jkm%TOx* zQMaA%YCMW^rhN#CW>!Lq{m_%HXSWE)0pWELNX{q@g-d5K4gH{Hno~BneIf}L=2+KE zRuj00sbh0)w@eH+<1t&FK8529Zo0C8DG9ml!6ciEKg2E#LMhB9ac3J+!97>V7^@u2 zX7J?ADIBX2Dw3^$;E|eZixc=E;gonFy)NCywsaY-&V&>KkXyt;@|frED(hJhixUeI zOQnx}L+csb9{-dX-RM8I)_3fC8fB0C=tHofuuxdKwNhEW+upZ)zg+^@+jH+ut)74P zX!YXzbYaaXY=JVA)8b0z5>Ze5CV3i?vHDfS4=8^ChN$;~&z#UB7x`fbRo_GghHnW? P(>|mApUJ~oG2Z?g`eq-O literal 0 HcmV?d00001 diff --git a/scripts/commons/Script.py b/scripts/commons/Script.py new file mode 100644 index 0000000..7ae4255 --- /dev/null +++ b/scripts/commons/Script.py @@ -0,0 +1,307 @@ +from os import path, listdir, getcwd, cpu_count +from os.path import join, realpath, dirname, isfile, isdir, getmtime +from scripts.commons.UI import UI +import __main__ +import argparse,json,sys +import pickle +import subprocess + + +class Script(): + ROOT_DIR = path.dirname(path.dirname(realpath( join(getcwd(), dirname(__file__))) )) # project root directory + + def __init__(self, cpp_builder_unum=0) -> None: + + ''' + Arguments specification + ----------------------- + - To add new arguments, edit the information below + - After changing information below, the config.json file must be manually deleted + - In other modules, these arguments can be accessed by their 1-letter ID + ''' + # list of arguments: 1-letter ID, Description, Hardcoded default + self.options = {'i': ('Server Hostname/IP', 'localhost'), + 'p': ('Agent Port', '3100'), + 'm': ('Monitor Port', '3200'), + 't': ('Team Name', 'FCPortugal'), + 'u': ('Uniform Number', '1'), + 'r': ('Robot Type', '1'), + 'P': ('Penalty Shootout', '0'), + 'F': ('magmaFatProxy', '0'), + 'D': ('Debug Mode', '1')} + + # list of arguments: 1-letter ID, data type, choices + self.op_types = {'i': (str, None), + 'p': (int, None), + 'm': (int, None), + 't': (str, None), + 'u': (int, range(1,12)), + 'r': (int, [0,1,2,3,4]), + 'P': (int, [0,1]), + 'F': (int, [0,1]), + 'D': (int, [0,1])} + + ''' + End of arguments specification + ''' + + self.read_or_create_config() + + #advance help text position + formatter = lambda prog: argparse.HelpFormatter(prog,max_help_position=52) + parser = argparse.ArgumentParser(formatter_class=formatter) + + o = self.options + t = self.op_types + + for id in self.options: # shorter metavar for aesthetic reasons + parser.add_argument(f"-{id}", help=f"{o[id][0]:30}[{o[id][1]:20}]", type=t[id][0], nargs='?', default=o[id][1], metavar='X', choices=t[id][1]) + + self.args = parser.parse_args() + + if getattr(sys, 'frozen', False): # disable debug mode when running from binary + self.args.D = 0 + + self.players = [] # list of created players + + Script.build_cpp_modules(exit_on_build = (cpp_builder_unum != 0 and cpp_builder_unum != self.args.u)) + + if self.args.D: + try: + print(f"\nNOTE: for help run \"python {__main__.__file__} -h\"") + except: + pass + + columns = [[],[],[]] + for key, value in vars(self.args).items(): + columns[0].append(o[key][0]) + columns[1].append(o[key][1]) + columns[2].append(value) + + UI.print_table(columns, ["Argument","Default at /config.json","Active"], alignment=["<","^","^"]) + + + def read_or_create_config(self) -> None: + + if not path.isfile('config.json'): # save hardcoded default values if file does not exist + with open("config.json", "w") as f: + json.dump(self.options, f, indent=4) + else: # load user-defined values (that can be overwritten by command-line arguments) + if path.getsize("config.json") == 0: # wait for possible write operation when launching multiple agents + from time import sleep + sleep(1) + if path.getsize("config.json") == 0: # abort after 1 second + print("Aborting: 'config.json' is empty. Manually verify and delete if still empty.") + exit() + + with open("config.json", "r") as f: + self.options = json.loads(f.read()) + + + @staticmethod + def build_cpp_modules(special_environment_prefix=[], exit_on_build=False): + ''' + Build C++ modules in folder /cpp using Pybind11 + + Parameters + ---------- + special_environment_prefix : `list` + command prefix to run a given command in the desired environment + useful to compile C++ modules for different python interpreter versions (other than default version) + Conda Env. example: ['conda', 'run', '-n', 'myEnv'] + If [] the default python interpreter is used as compilation target + exit_on_build : bool + exit if there is something to build (so that only 1 player per team builds c++ modules) + ''' + cpp_path = Script.ROOT_DIR + "/cpp/" + exclusions = ["__pycache__"] + + cpp_modules = [d for d in listdir(cpp_path) if isdir(join(cpp_path, d)) and d not in exclusions] + + if not cpp_modules: return #no modules to build + + python_cmd = f"python{sys.version_info.major}.{sys.version_info.minor}" # "python3" can select the wrong version, this prevents that + + def init(): + print("--------------------------\nC++ modules:",cpp_modules) + + try: + process = subprocess.Popen(special_environment_prefix+[python_cmd, "-m", "pybind11", "--includes"], stdout=subprocess.PIPE) + (includes, err) = process.communicate() + process.wait() + except: + print(f"Error while executing child program: '{python_cmd} -m pybind11 --includes'") + exit() + + includes = includes.decode().rstrip() # strip trailing newlines (and other whitespace chars) + print("Using Pybind11 includes: '",includes,"'",sep="") + return includes + + nproc = str(cpu_count()) + zero_modules = True + + for module in cpp_modules: + module_path = join(cpp_path, module) + + # skip module if there is no Makefile (typical distribution case) + if not isfile(join(module_path, "Makefile")): + continue + + # skip module in certain conditions + if isfile(join(module_path, module+".so")) and isfile(join(module_path, module+".c_info")): + with open(join(module_path, module+".c_info"), 'rb') as f: + info = pickle.load(f) + if info == python_cmd: + code_mod_time = max(getmtime(join(module_path, f)) for f in listdir(module_path) if f.endswith(".cpp") or f.endswith(".h")) + bin_mod_time = getmtime(join(module_path, module+".so")) + if bin_mod_time + 30 > code_mod_time: # favor not building with a margin of 30s (scenario: we unzip the fcpy project, including the binaries, the modification times are all similar) + continue + + # init: print stuff & get Pybind11 includes + if zero_modules: + if exit_on_build: + print("There are C++ modules to build. This player is not allowed to build. Aborting.") + exit() + zero_modules = False + includes = init() + + # build module + print(f'{f"Building: {module}... ":40}',end='',flush=True) + process = subprocess.Popen(['make', '-j'+nproc, 'PYBIND_INCLUDES='+includes], stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=module_path) + (output, err) = process.communicate() + exit_code = process.wait() + if exit_code == 0: + print("success!") + with open(join(module_path, module+".c_info"),"wb") as f: # save python version + pickle.dump(python_cmd, f, protocol=4) # protocol 4 is backward compatible with Python 3.4 + else: + print("Aborting! Building errors:") + print(output.decode(), err.decode()) + exit() + + if not zero_modules: + print("All modules were built successfully!\n--------------------------") + + + def batch_create(self, agent_cls, args_per_player): + ''' Creates batch of agents ''' + + for a in args_per_player: + self.players.append( agent_cls(*a) ) + + def batch_execute_agent(self, index : slice = slice(None)): + ''' + Executes agent normally (including commit & send) + + Parameters + ---------- + index : slice + subset of agents + (e.g. index=slice(1,2) will select the second agent) + (e.g. index=slice(1,3) will select the second and third agents) + by default, all agents are selected + ''' + for p in self.players[index]: + p.think_and_send() + + def batch_execute_behavior(self, behavior, index : slice = slice(None)): + ''' + Executes behavior + + Parameters + ---------- + behavior : str + name of behavior to execute + index : slice + subset of agents + (e.g. index=slice(1,2) will select the second agent) + (e.g. index=slice(1,3) will select the second and third agents) + by default, all agents are selected + ''' + for p in self.players[index]: + p.behavior.execute(behavior) + + def batch_commit_and_send(self, index : slice = slice(None)): + ''' + Commits & sends data to server + + Parameters + ---------- + index : slice + subset of agents + (e.g. index=slice(1,2) will select the second agent) + (e.g. index=slice(1,3) will select the second and third agents) + by default, all agents are selected + ''' + for p in self.players[index]: + p.scom.commit_and_send( p.world.robot.get_command() ) + + def batch_receive(self, index : slice = slice(None), update=True): + ''' + Waits for server messages + + Parameters + ---------- + index : slice + subset of agents + (e.g. index=slice(1,2) will select the second agent) + (e.g. index=slice(1,3) will select the second and third agents) + by default, all agents are selected + update : bool + update world state based on information received from server + if False, the agent becomes unaware of itself and its surroundings + which is useful for reducing cpu resources for dummy agents in demonstrations + ''' + for p in self.players[index]: + p.scom.receive(update) + + def batch_commit_beam(self, pos2d_and_rotation, index : slice = slice(None)): + ''' + Beam all player to 2D position with a given rotation + + Parameters + ---------- + pos2d_and_rotation : `list` + iterable of 2D positions and rotations e.g. [(0,0,45),(-5,0,90)] + index : slice + subset of agents + (e.g. index=slice(1,2) will select the second agent) + (e.g. index=slice(1,3) will select the second and third agents) + by default, all agents are selected + ''' + for p, pos_rot in zip(self.players[index], pos2d_and_rotation): + p.scom.commit_beam(pos_rot[0:2],pos_rot[2]) + + def batch_unofficial_beam(self, pos3d_and_rotation, index : slice = slice(None)): + ''' + Beam all player to 3D position with a given rotation + + Parameters + ---------- + pos3d_and_rotation : `list` + iterable of 3D positions and rotations e.g. [(0,0,0.5,45),(-5,0,0.5,90)] + index : slice + subset of agents + (e.g. index=slice(1,2) will select the second agent) + (e.g. index=slice(1,3) will select the second and third agents) + by default, all agents are selected + ''' + for p, pos_rot in zip(self.players[index], pos3d_and_rotation): + p.scom.unofficial_beam(pos_rot[0:3],pos_rot[3]) + + def batch_terminate(self, index : slice = slice(None)): + ''' + Close all sockets connected to the agent port + For scripts where the agent lives until the application ends, this is not needed + + Parameters + ---------- + index : slice + subset of agents + (e.g. index=slice(1,2) will select the second agent) + (e.g. index=slice(1,3) will select the second and third agents) + by default, all agents are selected + ''' + for p in self.players[index]: + p.terminate() + del self.players[index] # delete selection \ No newline at end of file diff --git a/scripts/commons/Server.py b/scripts/commons/Server.py new file mode 100644 index 0000000..caecb28 --- /dev/null +++ b/scripts/commons/Server.py @@ -0,0 +1,60 @@ +import subprocess + +class Server(): + def __init__(self, first_server_p, first_monitor_p, n_servers) -> None: + try: + import psutil + self.check_running_servers(psutil, first_server_p, first_monitor_p, n_servers) + except ModuleNotFoundError: + print("Info: Cannot check if the server is already running, because the psutil module was not found") + + self.first_server_p = first_server_p + self.n_servers = n_servers + self.rcss_processes = [] + + # makes it easier to kill test servers without affecting train servers + cmd = "simspark" if n_servers == 1 else "rcssserver3d" + for i in range(n_servers): + self.rcss_processes.append( + subprocess.Popen((f"{cmd} --agent-port {first_server_p+i} --server-port {first_monitor_p+i}").split(), + stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT, start_new_session=True) + ) + + def check_running_servers(self, psutil, first_server_p, first_monitor_p, n_servers): + ''' Check if any server is running on chosen ports ''' + found = False + p_list = [p for p in psutil.process_iter() if p.cmdline() and p.name() in ["rcssserver3d","simspark"]] + range1 = (first_server_p, first_server_p + n_servers) + range2 = (first_monitor_p,first_monitor_p + n_servers) + bad_processes = [] + + for p in p_list: + # currently ignoring remaining default port when only one of the ports is specified (uncommon scenario) + ports = [int(arg) for arg in p.cmdline()[1:] if arg.isdigit()] + if len(ports) == 0: + ports = [3100,3200] # default server ports (changing this is unlikely) + + conflicts = [str(port) for port in ports if ( + (range1[0] <= port < range1[1]) or (range2[0] <= port < range2[1]) )] + + if len(conflicts)>0: + if not found: + print("\nThere are already servers running on the same port(s)!") + found = True + bad_processes.append(p) + print(f"Port(s) {','.join(conflicts)} already in use by \"{' '.join(p.cmdline())}\" (PID:{p.pid})") + + if found: + print() + while True: + inp = input("Enter 'kill' to kill these processes or ctrl+c to abort. ") + if inp == "kill": + for p in bad_processes: + p.kill() + return + + + def kill(self): + for p in self.rcss_processes: + p.kill() + print(f"Killed {self.n_servers} rcssserver3d processes starting at {self.first_server_p}") diff --git a/scripts/commons/Train_Base.py b/scripts/commons/Train_Base.py new file mode 100644 index 0000000..9de07ec --- /dev/null +++ b/scripts/commons/Train_Base.py @@ -0,0 +1,494 @@ +from datetime import datetime, timedelta +from itertools import count +from os import listdir +from os.path import isdir, join, isfile +from scripts.commons.UI import UI +from shutil import copy +from stable_baselines3 import PPO +from stable_baselines3.common.base_class import BaseAlgorithm +from stable_baselines3.common.callbacks import EvalCallback, CheckpointCallback, CallbackList, BaseCallback +from typing import Callable +from world.World import World +from xml.dom import minidom +import numpy as np +import os, time, math, csv, select, sys +import pickle +import xml.etree.ElementTree as ET + + +class Train_Base(): + def __init__(self, script) -> None: + ''' + When training with multiple environments (multiprocessing): + The server port is incremented as follows: + self.server_p, self.server_p+1, self.server_p+2, ... + We add +1000 to the initial monitor port, so than we can have more than 100 environments: + self.monitor_p+1000, self.monitor_p+1001, self.monitor_p+1002, ... + When testing we use self.server_p and self.monitor_p + ''' + + args = script.args + self.script = script + self.ip = args.i + self.server_p = args.p # (initial) server port + self.monitor_p = args.m # monitor port when testing + self.monitor_p_1000 = args.m + 1000 # initial monitor port when training + self.robot_type = args.r + self.team = args.t + self.uniform = args.u + self.cf_last_time = 0 + self.cf_delay = 0 + self.cf_target_period = World.STEPTIME # target simulation speed while testing (default: real-time) + + @staticmethod + def prompt_user_for_model(): + + gyms_logs_path = "./scripts/gyms/logs/" + folders = [f for f in listdir(gyms_logs_path) if isdir(join(gyms_logs_path, f))] + folders.sort(key=lambda f: os.path.getmtime(join(gyms_logs_path, f)), reverse=True) # sort by modification date + + while True: + try: + folder_name = UI.print_list(folders,prompt="Choose folder (ctrl+c to return): ")[1] + except KeyboardInterrupt: + print() + return None # ctrl+c + + folder_dir = os.path.join(gyms_logs_path, folder_name) + models = [m[:-4] for m in listdir(folder_dir) if isfile(join(folder_dir, m)) and m.endswith(".zip")] + + if not models: + print("The chosen folder does not contain any .zip file!") + continue + + models.sort(key=lambda m: os.path.getmtime(join(folder_dir, m+".zip")), reverse=True) # sort by modification date + + try: + model_name = UI.print_list(models,prompt="Choose model (ctrl+c to return): ")[1] + break + except KeyboardInterrupt: + print() + + return {"folder_dir":folder_dir, "folder_name":folder_name, "model_file":os.path.join(folder_dir, model_name+".zip")} + + + def control_fps(self, read_input = False): + ''' Add delay to control simulation speed ''' + + if read_input: + speed = input() + if speed == '': + self.cf_target_period = 0 + print(f"Changed simulation speed to MAX") + else: + if speed == '0': + inp = input("Paused. Set new speed or '' to use previous speed:") + if inp != '': + speed = inp + + try: + speed = int(speed) + assert speed >= 0 + self.cf_target_period = World.STEPTIME * 100 / speed + print(f"Changed simulation speed to {speed}%") + except: + print("""Train_Base.py: + Error: To control the simulation speed, enter a non-negative integer. + To disable this control module, use test_model(..., enable_FPS_control=False) in your gyms environment.""") + + now = time.time() + period = now - self.cf_last_time + self.cf_last_time = now + self.cf_delay += (self.cf_target_period - period)*0.9 + if self.cf_delay > 0: + time.sleep(self.cf_delay) + else: + self.cf_delay = 0 + + + def test_model(self, model:BaseAlgorithm, env, log_path:str=None, model_path:str=None, max_episodes=0, enable_FPS_control=True, verbose=1): + ''' + Test model and log results + + Parameters + ---------- + model : BaseAlgorithm + Trained model + env : Env + Gym-like environment + log_path : str + Folder where statistics file is saved, default is `None` (no file is saved) + model_path : str + Folder where it reads evaluations.npz to plot it and create evaluations.csv, default is `None` (no plot, no csv) + max_episodes : int + Run tests for this number of episodes + Default is 0 (run until user aborts) + verbose : int + 0 - no output (except if enable_FPS_control=True) + 1 - print episode statistics + ''' + + if model_path is not None: + assert os.path.isdir(model_path), f"{model_path} is not a valid path" + self.display_evaluations(model_path) + + if log_path is not None: + assert os.path.isdir(log_path), f"{log_path} is not a valid path" + + # If file already exists, don't overwrite + if os.path.isfile(log_path + "/test.csv"): + for i in range(1000): + p = f"{log_path}/test_{i:03}.csv" + if not os.path.isfile(p): + log_path = p + break + else: + log_path += "/test.csv" + + with open(log_path, 'w') as f: + f.write("reward,ep. length,rew. cumulative avg., ep. len. cumulative avg.\n") + print("Train statistics are saved to:", log_path) + + if enable_FPS_control: # control simulation speed (using non blocking user input) + print("\nThe simulation speed can be changed by sending a non-negative integer\n" + "(e.g. '50' sets speed to 50%, '0' pauses the simulation, '' sets speed to MAX)\n") + + ep_reward = 0 + ep_length = 0 + rewards_sum = 0 + reward_min = math.inf + reward_max = -math.inf + ep_lengths_sum = 0 + ep_no = 0 + + obs = env.reset() + while True: + action, _states = model.predict(obs, deterministic=True) + obs, reward, done, info = env.step(action) + ep_reward += reward + ep_length += 1 + + if enable_FPS_control: # control simulation speed (using non blocking user input) + self.control_fps(select.select([sys.stdin], [], [], 0)[0]) + + if done: + obs = env.reset() + rewards_sum += ep_reward + ep_lengths_sum += ep_length + reward_max = max(ep_reward, reward_max) + reward_min = min(ep_reward, reward_min) + ep_no += 1 + avg_ep_lengths = ep_lengths_sum/ep_no + avg_rewards = rewards_sum/ep_no + + if verbose > 0: + print( f"\rEpisode: {ep_no:<3} Ep.Length: {ep_length:<4.0f} Reward: {ep_reward:<6.2f} \n", + end=f"--AVERAGE-- Ep.Length: {avg_ep_lengths:<4.0f} Reward: {avg_rewards:<6.2f} (Min: {reward_min:<6.2f} Max: {reward_max:<6.2f})", flush=True) + + if log_path is not None: + with open(log_path, 'a') as f: + writer = csv.writer(f) + writer.writerow([ep_reward, ep_length, avg_rewards, avg_ep_lengths]) + + if ep_no == max_episodes: + return + + ep_reward = 0 + ep_length = 0 + + def learn_model(self, model:BaseAlgorithm, total_steps:int, path:str, eval_env=None, eval_freq=None, eval_eps=5, save_freq=None, backup_env_file=None, export_name=None): + ''' + Learn Model for a specific number of time steps + + Parameters + ---------- + model : BaseAlgorithm + Model to train + total_steps : int + The total number of samples (env steps) to train on + path : str + Path where the trained model is saved + If the path already exists, an incrementing number suffix is added + eval_env : Env + Environment to periodically test the model + Default is None (no periodical evaluation) + eval_freq : int + Evaluate the agent every X steps + Default is None (no periodical evaluation) + eval_eps : int + Evaluate the agent for X episodes (both eval_env and eval_freq must be defined) + Default is 5 + save_freq : int + Saves model at every X steps + Default is None (no periodical checkpoint) + backup_gym_file : str + Generates backup of environment file in model's folder + Default is None (no backup) + export_name : str + If export_name and save_freq are defined, a model is exported every X steps + Default is None (no export) + + Returns + ------- + model_path : str + Directory where model was actually saved (considering incremental suffix) + + Notes + ----- + If `eval_env` and `eval_freq` were specified: + - The policy will be evaluated in `eval_env` every `eval_freq` steps + - Evaluation results will be saved in `path` and shown at the end of training + - Every time the results improve, the model is saved + ''' + + start = time.time() + start_date = datetime.now().strftime("%d/%m/%Y %H:%M:%S") + + # If path already exists, add suffix to avoid overwriting + if os.path.isdir(path): + for i in count(): + p = path.rstrip("/")+f'_{i:03}/' + if not os.path.isdir(p): + path = p + break + os.makedirs(path) + + # Backup environment file + if backup_env_file is not None: + backup_file = os.path.join(path, os.path.basename(backup_env_file)) + copy(backup_env_file, backup_file) + + evaluate = bool(eval_env is not None and eval_freq is not None) + + # Create evaluation callback + eval_callback = None if not evaluate else EvalCallback(eval_env, n_eval_episodes=eval_eps, eval_freq=eval_freq, log_path=path, + best_model_save_path=path, deterministic=True, render=False) + + # Create custom callback to display evaluations + custom_callback = None if not evaluate else Cyclic_Callback(eval_freq, lambda:self.display_evaluations(path,True)) + + # Create checkpoint callback + checkpoint_callback = None if save_freq is None else CheckpointCallback(save_freq=save_freq, save_path=path, name_prefix="model", verbose=1) + + # Create custom callback to export checkpoint models + export_callback = None if save_freq is None or export_name is None else Export_Callback(save_freq, path, export_name) + + callbacks = CallbackList([c for c in [eval_callback, custom_callback, checkpoint_callback, export_callback] if c is not None]) + + model.learn( total_timesteps=total_steps, callback=callbacks ) + model.save( os.path.join(path, "last_model") ) + + # Display evaluations if they exist + if evaluate: + self.display_evaluations(path) + + # Display timestamps + Model path + end_date = datetime.now().strftime('%d/%m/%Y %H:%M:%S') + duration = timedelta(seconds=int(time.time()-start)) + print(f"Train start: {start_date}") + print(f"Train end: {end_date}") + print(f"Train duration: {duration}") + print(f"Model path: {path}") + + # Append timestamps to backup environment file + if backup_env_file is not None: + with open(backup_file, 'a') as f: + f.write(f"\n# Train start: {start_date}\n") + f.write( f"# Train end: {end_date}\n") + f.write( f"# Train duration: {duration}") + + return path + + def display_evaluations(self, path, save_csv=False): + + eval_npz = os.path.join(path, "evaluations.npz") + + if not os.path.isfile(eval_npz): + return + + console_width = 80 + console_height = 18 + symb_x = "\u2022" + symb_o = "\u007c" + symb_xo = "\u237f" + + with np.load(eval_npz) as data: + time_steps = data["timesteps"] + results_raw = np.mean(data["results"],axis=1) + ep_lengths_raw = np.mean(data["ep_lengths"],axis=1) + sample_no = len(results_raw) + + xvals = np.linspace(0, sample_no-1, 80) + results = np.interp(xvals, range(sample_no), results_raw) + ep_lengths = np.interp(xvals, range(sample_no), ep_lengths_raw) + + results_limits = np.min(results), np.max(results) + ep_lengths_limits = np.min(ep_lengths), np.max(ep_lengths) + + results_discrete = np.digitize(results, np.linspace(results_limits[0]-1e-5, results_limits[1]+1e-5, console_height+1))-1 + ep_lengths_discrete = np.digitize(ep_lengths, np.linspace(0, ep_lengths_limits[1]+1e-5, console_height+1))-1 + + matrix = np.zeros((console_height, console_width, 2), int) + matrix[results_discrete[0] ][0][0] = 1 # draw 1st column + matrix[ep_lengths_discrete[0]][0][1] = 1 # draw 1st column + rng = [[results_discrete[0], results_discrete[0]], [ep_lengths_discrete[0], ep_lengths_discrete[0]]] + + # Create continuous line for both plots + for k in range(2): + for i in range(1,console_width): + x = [results_discrete, ep_lengths_discrete][k][i] + if x > rng[k][1]: + rng[k] = [rng[k][1]+1, x] + elif x < rng[k][0]: + rng[k] = [x, rng[k][0]-1] + else: + rng[k] = [x,x] + for j in range(rng[k][0],rng[k][1]+1): + matrix[j][i][k] = 1 + + print(f'{"-"*console_width}') + for l in reversed(range(console_height)): + for c in range(console_width): + if np.all(matrix[l][c] == 0): print(end=" ") + elif np.all(matrix[l][c] == 1): print(end=symb_xo) + elif matrix[l][c][0] == 1: print(end=symb_x) + else: print(end=symb_o) + print() + print(f'{"-"*console_width}') + print(f"({symb_x})-reward min:{results_limits[0]:11.2f} max:{results_limits[1]:11.2f}") + print(f"({symb_o})-ep. length min:{ep_lengths_limits[0]:11.0f} max:{ep_lengths_limits[1]:11.0f} {time_steps[-1]/1000:15.0f}k steps") + print(f'{"-"*console_width}') + + # save CSV + if save_csv: + eval_csv = os.path.join(path, "evaluations.csv") + with open(eval_csv, 'a+') as f: + writer = csv.writer(f) + if sample_no == 1: + writer.writerow(["time_steps", "reward ep.", "length"]) + writer.writerow([time_steps[-1],results_raw[-1],ep_lengths_raw[-1]]) + + + def generate_slot_behavior(self, path, slots, auto_head:bool, XML_name): + ''' + Function that generates the XML file for the optimized slot behavior, overwriting previous files + ''' + + file = os.path.join( path, XML_name ) + + # create the file structure + auto_head = '1' if auto_head else '0' + EL_behavior = ET.Element('behavior',{'description':'Add description to XML file', "auto_head":auto_head}) + + for i,s in enumerate(slots): + EL_slot = ET.SubElement(EL_behavior, 'slot', {'name':str(i), 'delta':str(s[0]/1000)}) + for j in s[1]: # go through all joint indices + ET.SubElement(EL_slot, 'move', {'id':str(j), 'angle':str(s[2][j])}) + + # create XML file + xml_rough = ET.tostring( EL_behavior, 'utf-8' ) + xml_pretty = minidom.parseString(xml_rough).toprettyxml(indent=" ") + with open(file, "w") as x: + x.write(xml_pretty) + + print(file, "was created!") + + @staticmethod + def linear_schedule(initial_value: float) -> Callable[[float], float]: + ''' + Linear learning rate schedule + + Parameters + ---------- + initial_value : float + Initial learning rate + + Returns + ------- + schedule : Callable[[float], float] + schedule that computes current learning rate depending on remaining progress + ''' + def func(progress_remaining: float) -> float: + ''' + Compute learning rate according to current progress + + Parameters + ---------- + progress_remaining : float + Progress will decrease from 1 (beginning) to 0 + + Returns + ------- + learning_rate : float + Learning rate according to current progress + ''' + return progress_remaining * initial_value + + return func + + @staticmethod + def export_model(input_file, output_file, add_sufix=True): + ''' + Export model weights to binary file + + Parameters + ---------- + input_file : str + Input file, compatible with algorithm + output_file : str + Output file, including directory + add_sufix : bool + If true, a suffix is appended to the file name: output_file + "_{index}.pkl" + ''' + + # If file already exists, don't overwrite + if add_sufix: + for i in count(): + f = f"{output_file}_{i:03}.pkl" + if not os.path.isfile(f): + output_file = f + break + + model = PPO.load(input_file) + weights = model.policy.state_dict() # dictionary containing network layers + + w = lambda name : weights[name].detach().cpu().numpy() # extract weights from policy + + var_list = [] + for i in count(0,2): # add hidden layers (step=2 because that's how SB3 works) + if f"mlp_extractor.policy_net.{i}.bias" not in weights: + break + var_list.append([w(f"mlp_extractor.policy_net.{i}.bias"), w(f"mlp_extractor.policy_net.{i}.weight"), "tanh"]) + + var_list.append( [w("action_net.bias"), w("action_net.weight"), "none"] ) # add final layer + + with open(output_file,"wb") as f: + pickle.dump(var_list, f, protocol=4) # protocol 4 is backward compatible with Python 3.4 + + + +class Cyclic_Callback(BaseCallback): + ''' Stable baselines custom callback ''' + def __init__(self, freq, function): + super(Cyclic_Callback, self).__init__(1) + self.freq = freq + self.function = function + + def _on_step(self) -> bool: + if self.n_calls % self.freq == 0: + self.function() + return True # If the callback returns False, training is aborted early + +class Export_Callback(BaseCallback): + ''' Stable baselines custom callback ''' + def __init__(self, freq, load_path, export_name): + super(Export_Callback, self).__init__(1) + self.freq = freq + self.load_path = load_path + self.export_name = export_name + + def _on_step(self) -> bool: + if self.n_calls % self.freq == 0: + path = os.path.join(self.load_path, f"model_{self.num_timesteps}_steps.zip") + Train_Base.export_model(path, f"./scripts/gyms/export/{self.export_name}") + return True # If the callback returns False, training is aborted early \ No newline at end of file diff --git a/scripts/commons/UI.py b/scripts/commons/UI.py new file mode 100644 index 0000000..e1869e4 --- /dev/null +++ b/scripts/commons/UI.py @@ -0,0 +1,302 @@ +from itertools import zip_longest +from math import inf +import math +import numpy as np +import shutil + +class UI(): + console_width = 80 + console_height = 24 + + @staticmethod + def read_particle(prompt, str_options, dtype=str, interval=[-inf,inf]): + ''' + Read particle from user from a given dtype or from a str_options list + + Parameters + ---------- + prompt : `str` + prompt to show user before reading input + str_options : `list` + list of str options (in addition to dtype if dtype is not str) + dtype : `class` + if dtype is str, then user must choose a value from str_options, otherwise it can also send a dtype value + interval : `list` + [>=min,= interval[0] and inp < interval[1]: + return inp, False + except: + pass + + print("Error: illegal input! Options:", str_options, f" or {dtype}" if dtype != str else "") + + @staticmethod + def read_int(prompt, min, max): + ''' + Read int from user in a given interval + :param prompt: prompt to show user before reading input + :param min: minimum input (inclusive) + :param max: maximum input (exclusive) + :return: choice + ''' + while True: + inp = input(prompt) + try: + inp = int(inp) + assert inp >= min and inp < max + return inp + except: + print(f"Error: illegal input! Choose number between {min} and {max-1}") + + @staticmethod + def print_table(data, titles=None, alignment=None, cols_width=None, cols_per_title=None, margins=None, numbering=None, prompt=None): + ''' + Print table + + Parameters + ---------- + data : `list` + list of columns, where each column is a list of items + titles : `list` + list of titles for each column, default is `None` (no titles) + alignment : `list` + list of alignments per column (excluding titles), default is `None` (left alignment for all cols) + cols_width : `list` + list of widths per column, default is `None` (fit to content) + Positive values indicate a fixed column width + Zero indicates that the column will fit its content + cols_per_title : `list` + maximum number of subcolumns per title, default is `None` (1 subcolumn per title) + margins : `list` + number of added leading and trailing spaces per column, default is `None` (margin=2 for all columns) + numbering : `list` + list of booleans per columns, indicating whether to assign numbers to each option + prompt : `str` + the prompt string, if given, is printed after the table before reading input + + Returns + ------- + index : `int` + returns global index of selected item (relative to table) + col_index : `int` + returns local index of selected item (relative to column) + column : `int` + returns number of column of selected item (starts at 0) + * if `numbering` or `prompt` are `None`, `None` is returned + + + Example + ------- + titles = ["Name","Age"] + data = [[John,Graciete], [30,50]] + alignment = ["<","^"] # 1st column is left-aligned, 2nd is centered + cols_width = [10,5] # 1st column's width=10, 2nd column's width=5 + margins = [3,3] + numbering = [True,False] # prints: [0-John,1-Graciete][30,50] + prompt = "Choose a person:" + ''' + + #--------------------------------------------- parameters + cols_no = len(data) + + if alignment is None: + alignment = ["<"]*cols_no + + if cols_width is None: + cols_width = [0]*cols_no + + if numbering is None: + numbering = [False]*cols_no + any_numbering = False + else: + any_numbering = True + + if margins is None: + margins = [2]*cols_no + + # Fit column to content + margin, if required + subcol = [] # subcolumn length and widths + for i in range(cols_no): + subcol.append([[],[]]) + if cols_width[i] == 0: + numbering_width = 4 if numbering[i] else 0 + if cols_per_title is None or cols_per_title[i] < 2: + cols_width[i] = max([len(str(item))+numbering_width for item in data[i]]) + margins[i]*2 + else: + subcol[i][0] = math.ceil(len(data[i])/cols_per_title[i]) # subcolumn maximum length + cols_per_title[i] = math.ceil(len(data[i])/subcol[i][0]) # reduce number of columns as needed + cols_width[i] = margins[i]*(1+cols_per_title[i]) - (1 if numbering[i] else 0) # remove one if numbering, same as when printing + for j in range(cols_per_title[i]): + subcol_data_width = max([len(str(item))+numbering_width for item in data[i][j*subcol[i][0]:j*subcol[i][0]+subcol[i][0]]]) + cols_width[i] += subcol_data_width # add subcolumn data width to column width + subcol[i][1].append(subcol_data_width) # save subcolumn data width + + if titles is not None: # expand to acomodate titles if needed + cols_width[i] = max(cols_width[i], len(titles[i]) + margins[i]*2 ) + + if any_numbering: + no_of_items=0 + cumulative_item_per_col=[0] # useful for getting the local index + for i in range(cols_no): + assert type(data[i]) == list, "In function 'print_table', 'data' must be a list of lists!" + + if numbering[i]: + data[i] = [f"{n+no_of_items:3}-{d}" for n,d in enumerate(data[i])] + no_of_items+=len(data[i]) + cumulative_item_per_col.append(no_of_items) + + table_width = sum(cols_width)+cols_no-1 + + #--------------------------------------------- col titles + print(f'{"="*table_width}') + if titles is not None: + for i in range(cols_no): + print(f'{titles[i]:^{cols_width[i]}}', end='|' if i < cols_no - 1 else '') + print() + for i in range(cols_no): + print(f'{"-"*cols_width[i]}', end='+' if i < cols_no - 1 else '') + print() + + #--------------------------------------------- merge subcolumns + if cols_per_title is not None: + for i,col in enumerate(data): + if cols_per_title[i] < 2: + continue + for k in range(subcol[i][0]): # create merged items + col[k] = (" "*margins[i]).join( f'{col[item]:{alignment[i]}{subcol[i][1][subcol_idx]}}' + for subcol_idx, item in enumerate(range(k,len(col),subcol[i][0])) ) + del col[subcol[i][0]:] # delete repeated items + + #--------------------------------------------- col items + for line in zip_longest(*data): + for i,item in enumerate(line): + l_margin = margins[i]-1 if numbering[i] else margins[i] # adjust margins when there are numbered options + item = "" if item is None else f'{" "*l_margin}{item}{" "*margins[i]}' # add margins + print(f'{item:{alignment[i]}{cols_width[i]}}', end='') + if i < cols_no - 1: + print(end='|') + print(end="\n") + print(f'{"="*table_width}') + + #--------------------------------------------- prompt + if prompt is None: + return None + + if not any_numbering: + print(prompt) + return None + + index = UI.read_int(prompt, 0, no_of_items) + + for i,n in enumerate(cumulative_item_per_col): + if index < n: + return index, index-cumulative_item_per_col[i-1], i-1 + + raise ValueError('Failed to catch illegal input') + + + @staticmethod + def print_list(data, numbering=True, prompt=None, divider=" | ", alignment="<", min_per_col=6): + ''' + Print list - prints list, using as many columns as possible + + Parameters + ---------- + data : `list` + list of items + numbering : `bool` + assigns number to each option + prompt : `str` + the prompt string, if given, is printed after the table before reading input + divider : `str` + string that divides columns + alignment : `str` + f-string style alignment ( '<', '>', '^' ) + min_per_col : int + avoid splitting columns with fewer items + + Returns + ------- + item : `int`, item + returns tuple with global index of selected item and the item object, + or `None` (if `numbering` or `prompt` are `None`) + + ''' + + WIDTH = shutil.get_terminal_size()[0] + + data_size = len(data) + items = [] + items_len = [] + + #--------------------------------------------- Add numbers, margins and divider + for i in range(data_size): + number = f"{i}-" if numbering else "" + items.append( f"{divider}{number}{data[i]}" ) + items_len.append( len(items[-1]) ) + + max_cols = np.clip((WIDTH+len(divider)) // min(items_len),1,math.ceil(data_size/max(min_per_col,1))) # width + len(divider) because it is not needed in last col + + #--------------------------------------------- Check maximum number of columns, considering content width (min:1) + for i in range(max_cols,0,-1): + cols_width = [] + cols_items = [] + table_width = 0 + a,b = divmod(data_size,i) + for col in range(i): + start = a*col + min(b,col) + end = start+a+(1 if col np.linalg.norm(self.b_rel) and w.ball_is_visible: + break + else: + if self.player.behavior.is_ready("Get_Up"): + self.player.behavior.execute_to_completion("Get_Up") + + reset_walk = self.behavior.previous_behavior != "Walk" + rel_target = self.b_rel - 0.25 * M.normalize_vec(self.b_rel) + rel_ori = M.vector_angle(self.b_rel) + dist = max(0.08, float(np.linalg.norm(rel_target)) * 0.7) + self.behavior.execute_sub_behavior("Walk", reset_walk, rel_target, False, rel_ori, False, dist) + self.sync() + + self.act = np.zeros(self.no_of_actions, np.float32) + return self.observe(True) + + def render(self, mode='human', close=False): + return + + def close(self): + Draw.clear_all() + self.player.terminate() + + def step(self, action): + r = self.player.world.robot + w = self.player.world + t = self.step_counter + dribble_target = (15, random.choice([5, -5])) + if w.ball_abs_pos[1] > 5: + dribble_target = (15, -5) + if w.ball_abs_pos[1] < -5: + dribble_target = (15, 5) + + self.dribble_rel_orientation = self.path_manager.get_dribble_path(optional_2d_target=dribble_target)[1] + + self.act = 0.75 * self.act + 0.25 * action * 0.7 * 0.95 * self.dribble_speed + + lfy, lfz, rfy, rfz = self.step_generator.get_target_positions( + self.step_counter == 0, self.STEP_DUR, self.STEP_Z_SPAN, self.leg_length * self.STEP_Z_MAX + ) + + a = self.act + l_ankle_pos = (a[0] * 0.025 - 0.01, a[1] * 0.01 + lfy, a[2] * 0.01 + lfz) + r_ankle_pos = (a[3] * 0.025 - 0.01, a[4] * 0.01 + rfy, a[5] * 0.01 + rfz) + l_foot_rot = a[6:9] * (2, 2, 3) + r_foot_rot = a[9:12] * (2, 2, 3) + + l_foot_rot[2] = max(0, l_foot_rot[2] + 18.3) + r_foot_rot[2] = min(0, r_foot_rot[2] - 18.3) + + arms = np.copy(self.DEFAULT_ARMS) + + amplitude = 15 + period = 25 + forward_arm_movement = amplitude * math.sin(2 * math.pi * t / period) + arms[0] += forward_arm_movement + arms[1] += forward_arm_movement + + inward_arm_movement = 10 + arms[2] += inward_arm_movement + arms[3] -= inward_arm_movement + + arms[0:4] += a[12:16] * 4 + + self.execute_ik(l_ankle_pos, l_foot_rot, r_ankle_pos, r_foot_rot) + r.set_joints_target_position_direct(slice(14, 22), arms, harmonize=False) + self.sync() + self.step_counter += 1 + + obs = self.observe() + + angle_rad = np.radians(self.gym_last_internal_abs_ori) + unit_vector = np.array([np.cos(angle_rad), np.sin(angle_rad)]) + + if np.linalg.norm(w.ball_cheat_abs_vel[:2]) != 0: + cos_theta = np.dot(unit_vector, w.ball_cheat_abs_vel[:2]) / ( + np.linalg.norm(unit_vector) * np.linalg.norm(w.ball_cheat_abs_vel[:2]) + ) + else: + cos_theta = 0 + + reward = np.linalg.norm(w.ball_cheat_abs_vel) * cos_theta + + if abs(w.ball_rel_torso_cart_pos[1]) > 0.02: + reward = 0 + + if self.ball_dist_hip_center_2d < 0.115 or self.ball_dist_hip_center_2d > 0.2: + reward = 0 + + if abs(r.imu_torso_roll) > 10 or abs(r.imu_torso_pitch) > 10: + reward = 0 + + if self.player.behavior.is_ready("Get_Up"): + self.terminal = True + elif (w.time_local_ms - self.reset_time > 7500 * 15 or + np.linalg.norm(w.ball_cheat_abs_pos[:2] - r.loc_head_position[:2]) > 0.25 or + not w.is_ball_abs_pos_from_vision): + self.terminal = True + else: + self.terminal = False + + return obs, reward, self.terminal, {} + + +class Train(Train_Base): + def __init__(self, script) -> None: + super().__init__(script) + + def train(self, args): + n_envs = min(8, os.cpu_count()) + n_steps_per_env = 128 + minibatch_size = 64 + total_steps = 500000000 + learning_rate = 3e-4 + folder_name = f'Dribble_R{self.robot_type}' + model_path = f'./scripts/gyms/logs/{folder_name}/' + + def init_env(i_env): + def thunk(): + return Dribble(self.ip, self.server_p + i_env, self.monitor_p_1000 + i_env, self.robot_type, False) + + return thunk + + servers = Server(self.server_p, self.monitor_p_1000, n_envs + 1) + + env = SubprocVecEnv([init_env(i) for i in range(n_envs)]) + eval_env = SubprocVecEnv([init_env(n_envs)]) + + try: + if "model_file" in args: + model = PPO.load( + args["model_file"], env=env, device="cuda", n_envs=n_envs, + n_steps=n_steps_per_env, batch_size=minibatch_size, learning_rate=learning_rate + ) + else: + model = PPO( + "MlpPolicy", env=env, verbose=1, n_steps=n_steps_per_env, + batch_size=minibatch_size, learning_rate=learning_rate, device="cuda" + ) + + model_path = self.learn_model( + model, total_steps, model_path, eval_env=eval_env, + eval_freq=n_steps_per_env * 10, save_freq=n_steps_per_env * 10, + backup_env_file=__file__ + ) + except KeyboardInterrupt: + sleep(1) + print("\nctrl+c pressed, aborting...\n") + servers.kill() + return + + env.close() + eval_env.close() + servers.kill() + + def test(self, args): + server = Server(self.server_p - 1, self.monitor_p, 1) + env = Dribble(self.ip, self.server_p - 1, self.monitor_p, self.robot_type, True) + model = PPO.load(args["model_file"], env=env) + + try: + self.export_model(args["model_file"], args["model_file"] + ".pkl", False) + self.test_model(model, env, log_path=args["folder_dir"], model_path=args["folder_dir"]) + except KeyboardInterrupt: + print() + + env.close() + server.kill() diff --git a/scripts/gyms/Kick_10M.py b/scripts/gyms/Kick_10M.py new file mode 100644 index 0000000..12eb297 --- /dev/null +++ b/scripts/gyms/Kick_10M.py @@ -0,0 +1,324 @@ +from random import random + +from agent.Base_Agent import Base_Agent as Agent +from behaviors.custom.Step.Step import Step +from world.commons.Draw import Draw +from stable_baselines3 import PPO +from stable_baselines3.common.vec_env import SubprocVecEnv +from scripts.commons.Server import Server +from scripts.commons.Train_Base import Train_Base +from time import sleep +import os, gym +import numpy as np +from math_ops.Math_Ops import Math_Ops as U +from math_ops.Math_Ops import Math_Ops as M +from behaviors.custom.Step.Step_Generator import Step_Generator + +''' +Objective: +Learn how to run forward using step primitive +---------- +- class Basic_Run: implements an OpenAI custom gym +- class Train: implements algorithms to train a new model or test an existing model +''' + + +class Kick_10M(gym.Env): + def __init__(self, ip, server_p, monitor_p, r_type, enable_draw) -> None: + self.lock_flag = False + self.sleep = 0 + self.reset_time = None + self.behavior = None + self.path_manager = None + self.bias_dir = None + self.robot_type = r_type + self.kick_ori = 0 + self.terminal = False + # Args: Server IP, Agent Port, Monitor Port, Uniform No., Robot Type, Team Name, Enable Log, Enable Draw + self.player = Agent(ip, server_p, monitor_p, 1, self.robot_type, "Gym", True, enable_draw) + self.step_counter = 0 # to limit episode size + self.ball_pos = np.array([0, 0, 0]) + + self.step_obj: Step = self.player.behavior.get_custom_behavior_object("Step") # Step behavior object + + # State space + obs_size = 63 + self.obs = np.zeros(obs_size, np.float32) + self.observation_space = gym.spaces.Box(low=np.full(obs_size, -np.inf, np.float32), + high=np.full(obs_size, np.inf, np.float32), dtype=np.float32) + + # Action space + MAX = np.finfo(np.float32).max + self.no_of_actions = act_size = 16 + self.action_space = gym.spaces.Box(low=np.full(act_size, -MAX, np.float32), + high=np.full(act_size, MAX, np.float32), dtype=np.float32) + + # Place ball far away to keep landmarks in FoV (head follows ball while using Step behavior) + self.player.scom.unofficial_move_ball((14, 0, 0.042)) + + self.ball_x_center = 0.21 + self.ball_y_center = -0.045 + self.player.scom.unofficial_set_play_mode("PlayOn") + self.player.scom.unofficial_move_ball((0, 0, 0)) + + def observe(self, init=False): + w = self.player.world + r = self.player.world.robot + + if init: + self.step_counter = 0 + self.obs[0] = self.step_counter / 20 + self.obs[1] = r.loc_head_z * 3 + self.obs[2] = r.loc_head_z_vel / 2 + self.obs[3] = r.imu_torso_roll / 15 + self.obs[4] = r.imu_torso_pitch / 15 + self.obs[5:8] = r.gyro / 100 + self.obs[8:11] = r.acc / 10 + self.obs[11:17] = r.frp.get('lf', np.zeros(6)) * (10, 10, 10, 0.01, 0.01, 0.01) + self.obs[17:23] = r.frp.get('rf', np.zeros(6)) * (10, 10, 10, 0.01, 0.01, 0.01) + self.obs[23:39] = r.joints_position[2:18] / 100 + self.obs[39:55] = r.joints_speed[2:18] / 6.1395 + ball_rel_hip_center = self.player.inv_kinematics.torso_to_hip_transform(w.ball_rel_torso_cart_pos) + if init: + self.obs[55:58] = (0, 0, 0) + elif w.ball_is_visible: + self.obs[55:58] = (ball_rel_hip_center - self.obs[58:61]) * 10 + self.obs[58:61] = ball_rel_hip_center + self.obs[61] = np.linalg.norm(ball_rel_hip_center) * 2 + self.obs[62] = U.normalize_deg(self.kick_ori - r.imu_torso_orientation) / 30 + ''' + Expected observations for walking parameters/state (example): + Time step R 0 1 2 0 1 2 3 4 + Progress 1 0 .5 1 0 .25 .5 .75 1 + Left leg active T F F F T T T T T + Parameters A A A B B B B B C + Example note: (A) has a step duration of 3ts, (B) has a step duration of 5ts + ''' + return self.obs + + def sync(self): + ''' Run a single simulation step ''' + r = self.player.world.robot + self.player.scom.commit_and_send(r.get_command()) + self.player.scom.receive() + + def reset(self): + # print("reset") + ''' + Reset and stabilize the robot + Note: for some behaviors it would be better to reduce stabilization or add noise + ''' + self.lock_flag = False + self.player.scom.unofficial_set_play_mode("PlayOn") + Gen_ball_pos = [random() * 5 - 9, random() * 6 - 3, 0] + Gen_player_pos = (random() * 3 + Gen_ball_pos[0], random() * 3 + Gen_ball_pos[1], 0.5) + self.ball_pos = np.array(Gen_ball_pos) + self.player.scom.unofficial_move_ball((Gen_ball_pos[0], Gen_ball_pos[1], Gen_ball_pos[2])) + self.sleep = 0 + self.step_counter = 0 + self.behavior = self.player.behavior + r = self.player.world.robot + w = self.player.world + t = w.time_local_ms + self.path_manager = self.player.path_manager + gait: Step_Generator = self.behavior.get_custom_behavior_object("Walk").env.step_generator + self.reset_time = t + + for _ in range(25): + self.player.scom.unofficial_beam(Gen_player_pos, 0) # beam player continuously (floating above ground) + self.player.behavior.execute("Zero_Bent_Knees") + self.sync() + + # beam player to ground + self.player.scom.unofficial_beam(Gen_player_pos, 0) + r.joints_target_speed[ + 0] = 0.01 # move head to trigger physics update (rcssserver3d bug when no joint is moving) + self.sync() + + # stabilize on ground + for _ in range(7): + self.player.behavior.execute("Zero_Bent_Knees") + self.sync() + # walk to ball + while True and w.time_local_ms - self.reset_time <= 50000: + direction = 0 + if self.player.behavior.is_ready("Get_Up"): + self.player.behavior.execute_to_completion("Get_Up") + self.bias_dir = [0.09, 0.1, 0.14, 0.08, 0.05][r.type] + biased_dir = M.normalize_deg(direction + self.bias_dir) # add bias to rectify direction + ang_diff = abs( + M.normalize_deg(biased_dir - r.loc_torso_orientation)) # the reset was learned with loc, not IMU + + next_pos, next_ori, dist_to_final_target = self.path_manager.get_path_to_ball( + x_ori=biased_dir, x_dev=-self.ball_x_center, y_dev=-self.ball_y_center, torso_ori=biased_dir) + if (w.ball_last_seen > t - w.VISUALSTEP_MS and ang_diff < 5 and + t - w.ball_abs_pos_last_update < 100 and # ball absolute location is recent + dist_to_final_target < 0.025 and # if absolute ball position is updated + not gait.state_is_left_active and gait.state_current_ts == 2): # to avoid kicking immediately without preparation & stability + break + else: + dist = max(0.07, dist_to_final_target) + reset_walk = self.behavior.previous_behavior != "Walk" # reset walk if it wasn't the previous behavior + self.behavior.execute_sub_behavior("Walk", reset_walk, next_pos, True, next_ori, True, + dist) # target, is_target_abs, ori, is_ori_abs, distance + + self.sync() + + # memory variables + self.lastx = r.cheat_abs_pos[0] + self.act = np.zeros(self.no_of_actions, np.float32) + + return self.observe(True) + + def render(self, mode='human', close=False): + return + + def close(self): + Draw.clear_all() + self.player.terminate() + + def step(self, action): + r = self.player.world.robot + b = self.player.world.ball_abs_pos + w = self.player.world + t = w.time_local_ms + if self.step_counter < 5: + r.joints_target_speed[2:18] = action * [ + 4, + 4, + 1, + 1, + 0.2, + 0.2, + 0.2, + 0.2, + 5, + 5, + 3.5, + 3.5, + 1, + 1, + 1, + 1] + r.joints_target_speed[12] += 1 + r.joints_target_speed[6] += 3 + r.joints_target_speed[5] -= 1 + r.joints_target_speed[8] += 3 + r.joints_target_speed[9] -= 5 + else: + r.joints_target_speed[2:18] = action * [ + 7.03, + 7.03, + 3, + 3, + 7.03, + 7.03, + 7, + 7, + 7, + 7, + 2, + 2, + 1, + 1, + 1, + 1] + r.joints_target_speed[6] -= 5 + r.joints_target_speed[7] += 6 + r.joints_target_speed[9] += 6 + r.joints_target_speed[11] -= 0.7 + r.set_joints_target_position_direct([0, 1], np.array([0, -44], float), False) + + self.sync() # run simulation step + self.step_counter += 1 + self.lastx = r.cheat_abs_pos[0] + + # terminal state: the robot is falling or timeout + if self.step_counter > 12: + obs = self.observe() + self.player.scom.unofficial_beam((-14.5, 0, 0.51), 0) # beam player continuously (floating above ground) + waiting_steps = 0 + high = 0 + while waiting_steps < 650: # 假设额外等待5个步骤 + if w.ball_cheat_abs_pos[2] > high: + high = w.ball_cheat_abs_pos[2] + self.sync() # 继续执行仿真步骤 + waiting_steps += 1 + dis = np.linalg.norm(self.ball_pos - w.ball_cheat_abs_pos) + reward = 10 - abs(10 - dis) - abs(w.ball_cheat_abs_pos[1] - self.ball_pos[1]) - abs(1.5-high) * 3 + # print(reward) + self.terminal = True + + else: + obs = self.observe() + reward = 0 + self.terminal = False + + return obs, reward, self.terminal, {} + + +class Train(Train_Base): + def __init__(self, script) -> None: + super().__init__(script) + + def train(self, args): + + # --------------------------------------- Learning parameters + n_envs = min(14, os.cpu_count()) + n_steps_per_env = 128 # RolloutBuffer is of size (n_steps_per_env * n_envs) + minibatch_size = 64 # should be a factor of (n_steps_per_env * n_envs) + total_steps = 30000000 + learning_rate = 3e-5 + folder_name = f'Kick_10M_R{self.robot_type}' + model_path = f'./scripts/gyms/logs/{folder_name}/' + + # print("Model path:", model_path) + + # --------------------------------------- Run algorithm + def init_env(i_env): + def thunk(): + return Kick_10M(self.ip, self.server_p + i_env, self.monitor_p_1000 + i_env, self.robot_type, False) + + return thunk + + servers = Server(self.server_p, self.monitor_p_1000, n_envs + 1) # include 1 extra server for testing + + env = SubprocVecEnv([init_env(i) for i in range(n_envs)]) + eval_env = SubprocVecEnv([init_env(n_envs)]) + + try: + if "model_file" in args: # retrain + model = PPO.load(args["model_file"], env=env, device="cuda", n_envs=n_envs, n_steps=n_steps_per_env, + batch_size=minibatch_size, learning_rate=learning_rate) + else: # train new model + model = PPO("MlpPolicy", env=env, verbose=1, n_steps=n_steps_per_env, batch_size=minibatch_size, + learning_rate=learning_rate, device="cuda") + + model_path = self.learn_model(model, total_steps, model_path, eval_env=eval_env, + eval_freq=n_steps_per_env * 20, save_freq=n_steps_per_env * 20, + backup_env_file=__file__) + except KeyboardInterrupt: + sleep(1) # wait for child processes + print("\nctrl+c pressed, aborting...\n") + servers.kill() + return + + env.close() + eval_env.close() + servers.kill() + + def test(self, args): + # Uses different server and monitor ports + server = Server(self.server_p - 1, self.monitor_p, 1) + env = Kick_10M(self.ip, self.server_p - 1, self.monitor_p, self.robot_type, True) + model = PPO.load(args["model_file"], env=env) + + try: + self.export_model(args["model_file"], args["model_file"] + ".pkl", + False) # Export to pkl to create custom behavior + self.test_model(model, env, log_path=args["folder_dir"], model_path=args["folder_dir"]) + except KeyboardInterrupt: + print() + + env.close() + server.kill() diff --git a/scripts/gyms/Kick_15M.py b/scripts/gyms/Kick_15M.py new file mode 100644 index 0000000..3c42dda --- /dev/null +++ b/scripts/gyms/Kick_15M.py @@ -0,0 +1,326 @@ +from random import random +from random import gauss +from agent.Base_Agent import Base_Agent as Agent +from behaviors.custom.Step.Step import Step +from world.commons.Draw import Draw +from stable_baselines3 import PPO +from stable_baselines3.common.vec_env import SubprocVecEnv +from scripts.commons.Server import Server +from scripts.commons.Train_Base import Train_Base +from time import sleep +import os, gym +import numpy as np +from math_ops.Math_Ops import Math_Ops as U +from math_ops.Math_Ops import Math_Ops as M +from behaviors.custom.Step.Step_Generator import Step_Generator + +''' +Objective: +Learn how to run forward using step primitive +---------- +- class Basic_Run: implements an OpenAI custom gym +- class Train: implements algorithms to train a new model or test an existing model +''' + + +class Fxxk_WHUAI(gym.Env): + def __init__(self, ip, server_p, monitor_p, r_type, enable_draw) -> None: + self.lock_flag = False + self.sleep = 0 + self.reset_time = None + self.behavior = None + self.path_manager = None + self.bias_dir = None + self.robot_type = r_type + self.kick_ori = 0 + self.terminal = False + # Args: Server IP, Agent Port, Monitor Port, Uniform No., Robot Type, Team Name, Enable Log, Enable Draw + self.player = Agent(ip, server_p, monitor_p, 1, self.robot_type, "Gym", True, enable_draw) + self.step_counter = 0 # to limit episode size + self.ball_pos = np.array([0, 0, 0]) + + self.step_obj: Step = self.player.behavior.get_custom_behavior_object("Step") # Step behavior object + + # State space + obs_size = 63 + self.obs = np.zeros(obs_size, np.float32) + self.observation_space = gym.spaces.Box(low=np.full(obs_size, -np.inf, np.float32), + high=np.full(obs_size, np.inf, np.float32), dtype=np.float32) + + # Action space + MAX = np.finfo(np.float32).max + self.no_of_actions = act_size = 16 + self.action_space = gym.spaces.Box(low=np.full(act_size, -MAX, np.float32), + high=np.full(act_size, MAX, np.float32), dtype=np.float32) + + # Place ball far away to keep landmarks in FoV (head follows ball while using Step behavior) + self.player.scom.unofficial_move_ball((14, 0, 0.042)) + + self.ball_x_center = 0.21 + self.ball_y_center = -0.045 + self.player.scom.unofficial_set_play_mode("PlayOn") + self.player.scom.unofficial_move_ball((0, 0, 0)) + + def observe(self, init=False): + w = self.player.world + r = self.player.world.robot + + if init: + self.step_counter = 0 + self.obs[0] = self.step_counter / 20 + self.obs[1] = r.loc_head_z * 3 + self.obs[2] = r.loc_head_z_vel / 2 + self.obs[3] = r.imu_torso_roll / 15 + self.obs[4] = r.imu_torso_pitch / 15 + self.obs[5:8] = r.gyro / 100 + self.obs[8:11] = r.acc / 10 + self.obs[11:17] = r.frp.get('lf', np.zeros(6)) * (10, 10, 10, 0.01, 0.01, 0.01) + self.obs[17:23] = r.frp.get('rf', np.zeros(6)) * (10, 10, 10, 0.01, 0.01, 0.01) + self.obs[23:39] = r.joints_position[2:18] / 100 + self.obs[39:55] = r.joints_speed[2:18] / 6.1395 + ball_rel_hip_center = self.player.inv_kinematics.torso_to_hip_transform(w.ball_rel_torso_cart_pos) + if init: + self.obs[55:58] = (0, 0, 0) + elif w.ball_is_visible: + self.obs[55:58] = (ball_rel_hip_center - self.obs[58:61]) * 10 + self.obs[58:61] = ball_rel_hip_center + self.obs[61] = np.linalg.norm(ball_rel_hip_center) * 2 + self.obs[62] = U.normalize_deg(self.kick_ori - r.imu_torso_orientation) / 30 + ''' + Expected observations for walking parameters/state (example): + Time step R 0 1 2 0 1 2 3 4 + Progress 1 0 .5 1 0 .25 .5 .75 1 + Left leg active T F F F T T T T T + Parameters A A A B B B B B C + Example note: (A) has a step duration of 3ts, (B) has a step duration of 5ts + ''' + return self.obs + + def sync(self): + ''' Run a single simulation step ''' + r = self.player.world.robot + self.player.scom.commit_and_send(r.get_command()) + self.player.scom.receive() + + def reset(self): + # print("reset") + ''' + Reset and stabilize the robot + Note: for some behaviors it would be better to reduce stabilization or add noise + ''' + self.lock_flag = False + self.player.scom.unofficial_set_play_mode("PlayOn") + Gen_ball_pos = [random() * 5 - 9, random() * 6 - 3, 0] + Gen_player_pos = (random() * 3 + Gen_ball_pos[0], random() * 3 + Gen_ball_pos[1], 0.5) + Gen_player_rot = random() * 360 + self.ball_pos = np.array(Gen_ball_pos) + self.player.scom.unofficial_move_ball((Gen_ball_pos[0], Gen_ball_pos[1], Gen_ball_pos[2])) + self.sleep = 0 + self.step_counter = 0 + self.behavior = self.player.behavior + r = self.player.world.robot + w = self.player.world + t = w.time_local_ms + self.path_manager = self.player.path_manager + gait: Step_Generator = self.behavior.get_custom_behavior_object("Walk").env.step_generator + self.reset_time = t + + for _ in range(25): + self.player.scom.unofficial_beam(Gen_player_pos, Gen_player_rot) # beam player continuously (floating above ground) + self.player.behavior.execute("Zero_Bent_Knees") + self.sync() + + # beam player to ground + self.player.scom.unofficial_beam(Gen_player_pos, Gen_player_rot) + r.joints_target_speed[ + 0] = 0.01 # move head to trigger physics update (rcssserver3d bug when no joint is moving) + self.sync() + + # stabilize on ground + for _ in range(7): + self.player.behavior.execute("Zero_Bent_Knees") + self.sync() + delta_diff = gauss(1, 0.1) + # walk to ball + while True and w.time_local_ms - self.reset_time <= 50000: + direction = 0 + if self.player.behavior.is_ready("Get_Up"): + self.player.behavior.execute_to_completion("Get_Up") + self.bias_dir = [0.09, 0.1, 0.14, 0.08, 0.05][r.type] + biased_dir = M.normalize_deg(direction + self.bias_dir) # add bias to rectify direction + ang_diff = abs( + M.normalize_deg(biased_dir - r.loc_torso_orientation)) # the reset was learned with loc, not IMU + + next_pos, next_ori, dist_to_final_target = self.path_manager.get_path_to_ball( + x_ori=biased_dir, x_dev=-self.ball_x_center, y_dev=-self.ball_y_center, torso_ori=biased_dir) + if (w.ball_last_seen > t - w.VISUALSTEP_MS and ang_diff < 5 + delta_diff and + t - w.ball_abs_pos_last_update < 100 and # ball absolute location is recent + dist_to_final_target < 0.018 and # if absolute ball position is updated + not gait.state_is_left_active and gait.state_current_ts == 2): # to avoid kicking immediately without preparation & stability + break + else: + dist = max(0.07, dist_to_final_target) + reset_walk = self.behavior.previous_behavior != "Walk" # reset walk if it wasn't the previous behavior + self.behavior.execute_sub_behavior("Walk", reset_walk, next_pos, True, next_ori, True, + dist) # target, is_target_abs, ori, is_ori_abs, distance + + self.sync() + + # memory variables + self.lastx = r.cheat_abs_pos[0] + self.act = np.zeros(self.no_of_actions, np.float32) + + return self.observe(True) + + def render(self, mode='human', close=False): + return + + def close(self): + Draw.clear_all() + self.player.terminate() + + def step(self, action): + r = self.player.world.robot + b = self.player.world.ball_abs_pos + w = self.player.world + t = w.time_local_ms + if self.step_counter < 6: + r.joints_target_speed[2:18] = action * [ + 2.1, + 2.1, + 1.1, + 1.1, + 0.21, + 0.21, + 0.21, + 0.21, + 2.2, + 2.2, + 1.1, + 1.1, + 1.1, + 1.1, + 1.1, + 1.1] + r.joints_target_speed[12] += 1 + r.joints_target_speed[6] += 3 + r.joints_target_speed[5] -= 1 + r.joints_target_speed[8] += 3 + r.joints_target_speed[9] -= 5 + else: + r.joints_target_speed[2:18] = action * [ + 7.03, + 7.03, + 3, + 3, + 7.03, + 7.03, + 7, + 7, + 7, + 7, + 2, + 2, + 1, + 1, + 1, + 1] + r.joints_target_speed[6] -= 2.5 + r.joints_target_speed[7] += 2.5 + r.joints_target_speed[9] += 2.5 + r.joints_target_speed[11] -= 0.7 + r.set_joints_target_position_direct([0, 1], np.array([0, -44], float), False) + + self.sync() # run simulation step + self.step_counter += 1 + self.lastx = r.cheat_abs_pos[0] + + # terminal state: the robot is falling or timeout + if self.step_counter > 16: + obs = self.observe() + self.player.scom.unofficial_beam((-14.5, 0, 0.51), 0) # beam player continuously (floating above ground) + waiting_steps = 0 + high = 0 + while waiting_steps < 650: # 假设额外等待5个步骤 + if w.ball_cheat_abs_pos[2] > high: + high = w.ball_cheat_abs_pos[2] + self.sync() # 继续执行仿真步骤 + waiting_steps += 1 + dis = np.linalg.norm(self.ball_pos - w.ball_cheat_abs_pos) + reward = dis - abs(w.ball_cheat_abs_pos[1] - self.ball_pos[1]) + high*0.2 + # print(reward) + self.terminal = True + + else: + obs = self.observe() + reward = 0 + self.terminal = False + + return obs, reward, self.terminal, {} + + +class Train(Train_Base): + def __init__(self, script) -> None: + super().__init__(script) + + def train(self, args): + + # --------------------------------------- Learning parameters + n_envs = min(14, os.cpu_count()) + n_steps_per_env = 128 # RolloutBuffer is of size (n_steps_per_env * n_envs) + minibatch_size = 64 # should be a factor of (n_steps_per_env * n_envs) + total_steps = 30000000 + learning_rate = 3e-5 + folder_name = f'Kick_15M_R{self.robot_type}' + model_path = f'./scripts/gyms/logs/{folder_name}/' + + # print("Model path:", model_path) + + # --------------------------------------- Run algorithm + def init_env(i_env): + def thunk(): + return Fxxk_WHUAI(self.ip, self.server_p + i_env, self.monitor_p_1000 + i_env, self.robot_type, False) + + return thunk + + servers = Server(self.server_p, self.monitor_p_1000, n_envs + 1) # include 1 extra server for testing + + env = SubprocVecEnv([init_env(i) for i in range(n_envs)]) + eval_env = SubprocVecEnv([init_env(n_envs)]) + + try: + if "model_file" in args: # retrain + model = PPO.load(args["model_file"], env=env, device="cuda", n_envs=n_envs, n_steps=n_steps_per_env, + batch_size=minibatch_size, learning_rate=learning_rate) + else: # train new model + model = PPO("MlpPolicy", env=env, verbose=1, n_steps=n_steps_per_env, batch_size=minibatch_size, + learning_rate=learning_rate, device="cuda") + + model_path = self.learn_model(model, total_steps, model_path, eval_env=eval_env, + eval_freq=n_steps_per_env * 20, save_freq=n_steps_per_env * 20, + backup_env_file=__file__) + except KeyboardInterrupt: + sleep(1) # wait for child processes + print("\nctrl+c pressed, aborting...\n") + servers.kill() + return + + env.close() + eval_env.close() + servers.kill() + + def test(self, args): + # Uses different server and monitor ports + server = Server(self.server_p - 1, self.monitor_p, 1) + env = Fxxk_WHUAI(self.ip, self.server_p - 1, self.monitor_p, self.robot_type, True) + model = PPO.load(args["model_file"], env=env) + + try: + self.export_model(args["model_file"], args["model_file"] + ".pkl", + False) # Export to pkl to create custom behavior + self.test_model(model, env, log_path=args["folder_dir"], model_path=args["folder_dir"]) + except KeyboardInterrupt: + print() + + env.close() + server.kill() diff --git a/scripts/gyms/Kick_20M.py b/scripts/gyms/Kick_20M.py new file mode 100644 index 0000000..d678ab5 --- /dev/null +++ b/scripts/gyms/Kick_20M.py @@ -0,0 +1,322 @@ +import math +import pickle +from random import random +from random import randint +from agent.Base_Agent import Base_Agent as Agent +from behaviors.custom.Step.Step import Step +from world.commons.Draw import Draw +from stable_baselines3 import PPO +from stable_baselines3.common.vec_env import SubprocVecEnv +from scripts.commons.Server import Server +from scripts.commons.Train_Base import Train_Base +from time import sleep +import os, gym +import numpy as np +from math_ops.Math_Ops import Math_Ops as U +from math_ops.Math_Ops import Math_Ops as M +from behaviors.custom.Step.Step_Generator import Step_Generator + +''' +Objective: +Learn how to run forward using step primitive +---------- +- class Basic_Run: implements an OpenAI custom gym +- class Train: implements algorithms to train a new model or test an existing model +''' + + +class Mimic(gym.Env): + def __init__(self, ip, server_p, monitor_p, r_type, enable_draw) -> None: + self.phase = 0 + self.init_step = 40 + self.lock_flag = False + self.sleep = 0 + self.reset_time = None + self.behavior = None + self.path_manager = None + self.bias_dir = None + self.robot_type = r_type + self.kick_ori = 0 + self.terminal = False + # Args: Server IP, Agent Port, Monitor Port, Uniform No., Robot Type, Team Name, Enable Log, Enable Draw + self.player = Agent(ip, server_p, monitor_p, 1, self.robot_type, "Gym", True, enable_draw) + self.step_counter = 0 # to limit episode size + self.ball_pos = np.array([0, 0, 0]) + + self.step_obj: Step = self.player.behavior.get_custom_behavior_object("Step") # Step behavior object + + # State space + obs_size = 63 + self.obs = np.zeros(obs_size, np.float32) + self.observation_space = gym.spaces.Box(low=np.full(obs_size, -np.inf, np.float32), + high=np.full(obs_size, np.inf, np.float32), dtype=np.float32) + + # Action space + MAX = np.finfo(np.float32).max + self.no_of_actions = act_size = 16 + self.action_space = gym.spaces.Box(low=np.full(act_size, -MAX, np.float32), + high=np.full(act_size, MAX, np.float32), dtype=np.float32) + + # Place ball far away to keep landmarks in FoV (head follows ball while using Step behavior) + self.player.scom.unofficial_move_ball((14, 0, 0.042)) + + self.ball_x_center = 0.19 + self.ball_y_center = -0.045 + self.player.scom.unofficial_set_play_mode("PlayOn") + self.player.scom.unofficial_move_ball((0, 0, 0)) + + with open("kick_slot", 'rb') as f: + self.obs_list = pickle.load(f) + self.obs_list = np.array(self.obs_list) + + def observe(self, init=False): + w = self.player.world + r = self.player.world.robot + + if init: + self.step_counter = 0 + self.obs[0] = self.step_counter / 20 + self.obs[1] = r.loc_head_z * 3 + self.obs[2] = r.loc_head_z_vel / 2 + self.obs[3] = r.imu_torso_roll / 15 + self.obs[4] = r.imu_torso_pitch / 15 + self.obs[5:8] = r.gyro / 100 + self.obs[8:11] = r.acc / 10 + self.obs[11:17] = r.frp.get('lf', np.zeros(6)) * (10, 10, 10, 0.01, 0.01, 0.01) + self.obs[17:23] = r.frp.get('rf', np.zeros(6)) * (10, 10, 10, 0.01, 0.01, 0.01) + self.obs[23:39] = r.joints_position[2:18] / 100 + self.obs[39:55] = r.joints_speed[2:18] / 6.1395 + ball_rel_hip_center = self.player.inv_kinematics.torso_to_hip_transform(w.ball_rel_torso_cart_pos) + if init: + self.obs[55:58] = (0, 0, 0) + elif w.ball_is_visible: + self.obs[55:58] = (ball_rel_hip_center - self.obs[58:61]) * 10 + self.obs[58:61] = ball_rel_hip_center + self.obs[61] = np.linalg.norm(ball_rel_hip_center) * 2 + self.obs[62] = U.normalize_deg(self.kick_ori - r.imu_torso_orientation) / 30 + ''' + Expected observations for walking parameters/state (example): + Time step R 0 1 2 0 1 2 3 4 + Progress 1 0 .5 1 0 .25 .5 .75 1 + Left leg active T F F F T T T T T + Parameters A A A B B B B B C + Example note: (A) has a step duration of 3ts, (B) has a step duration of 5ts + ''' + return self.obs + + def sync(self): + ''' Run a single simulation step ''' + r = self.player.world.robot + self.player.scom.commit_and_send(r.get_command()) + self.player.scom.receive() + + def reset(self): + # print("reset") + ''' + Reset and stabilize the robot + Note: for some behaviors it would be better to reduce stabilization or add noise + ''' + self.lock_flag = False + self.phase = 0 + # self.init_step = randint(0,74) + self.init_step = 0 + + self.player.scom.unofficial_set_play_mode("PlayOn") + Gen_ball_pos = [random() * 5 - 9, random() * 6 - 3, 0] + Gen_player_pos = (random() * 3 + Gen_ball_pos[0], random() * 3 + Gen_ball_pos[1], 0.5) + self.ball_pos = np.array(Gen_ball_pos) + self.player.scom.unofficial_move_ball((Gen_ball_pos[0], Gen_ball_pos[1], Gen_ball_pos[2])) + self.sleep = 0 + self.step_counter = self.init_step // 2 + self.behavior = self.player.behavior + r = self.player.world.robot + w = self.player.world + t = w.time_local_ms + self.path_manager = self.player.path_manager + gait: Step_Generator = self.behavior.get_custom_behavior_object("Walk").env.step_generator + self.reset_time = t + + for _ in range(25): + self.player.scom.unofficial_beam(Gen_player_pos, 0) # beam player continuously (floating above ground) + self.player.behavior.execute("Zero_Bent_Knees") + self.sync() + + # beam player to ground + self.player.scom.unofficial_beam(Gen_player_pos, 0) + r.joints_target_speed[ + 0] = 0.01 # move head to trigger physics update (rcssserver3d bug when no joint is moving) + self.sync() + + # stabilize on ground + for _ in range(7): + self.player.behavior.execute("Zero_Bent_Knees") + self.sync() + # walk to ball + while True and w.time_local_ms - self.reset_time <= 50000: + if self.player.behavior.is_ready("Get_Up"): + self.player.behavior.execute_to_completion("Get_Up") + if self.phase == 0: + direction = 0 + self.bias_dir = [0.09, 0, 0.14, 0, 0.05][r.type] + biased_dir = M.normalize_deg(direction + self.bias_dir) # add bias to rectify direction + ang_diff = abs( + M.normalize_deg(biased_dir - r.loc_torso_orientation)) # the reset was learned with loc, not IMU + + next_pos, next_ori, dist_to_final_target = self.path_manager.get_path_to_ball( + x_ori=biased_dir, x_dev=-self.ball_x_center, y_dev=-self.ball_y_center, torso_ori=biased_dir) + + + if (w.ball_last_seen > t - w.VISUALSTEP_MS and ang_diff < 5 and + t - w.ball_abs_pos_last_update < 100 and # ball absolute location is recent + dist_to_final_target < 0.025 and # if absolute ball position is updated + not gait.state_is_left_active and gait.state_current_ts == 2): + self.behavior.execute_sub_behavior("Kick_Motion", True) + if self.phase == self.init_step: + break + self.phase += 1 + + else: + dist = max(0.07, dist_to_final_target) + reset_walk = self.behavior.previous_behavior != "Walk" # reset walk if it wasn't the previous behavior + self.behavior.execute_sub_behavior("Walk", reset_walk, next_pos, True, next_ori, True, + dist) # target, is_target_abs, ori, is_ori_abs, distance + else: + self.phase += 1 + self.behavior.execute_sub_behavior("Kick_Motion", False) + if self.phase == self.init_step: + break + + + self.sync() + + # memory variables + self.lastx = r.cheat_abs_pos[0] + self.act = np.zeros(self.no_of_actions, np.float32) + + return self.observe(True) + + def render(self, mode='human', close=False): + return + + def close(self): + Draw.clear_all() + self.player.terminate() + + def step(self, action): + r = self.player.world.robot + b = self.player.world.ball_abs_pos + w = self.player.world + t = w.time_local_ms + r.joints_target_speed[2:18] = action + r.set_joints_target_position_direct([0, 1], np.array([0, -44], float), False) + + self.sync() # run simulation step + self.lastx = r.cheat_abs_pos[0] + + # terminal state: the robot is falling or timeout + if self.step_counter > 42: + obs = self.observe() + self.player.scom.unofficial_beam((-14.5, 0, 0.51), 0) # beam player continuously (floating above ground) + waiting_steps = 0 + high = 0 + while waiting_steps < 650: # 假设额外等待5个步骤 + if w.ball_cheat_abs_pos[2] > high: + high = w.ball_cheat_abs_pos[2] + self.sync() # 继续执行仿真步骤 + waiting_steps += 1 + dis = np.linalg.norm(self.ball_pos - w.ball_cheat_abs_pos) + # reward = 0 + reward = dis - abs(w.ball_cheat_abs_pos[1] - self.ball_pos[1]) + high*0.2 + + # print(reward) + self.terminal = True + + else: + obs = self.observe() + # 计算状态差异(例如,均方误差) + ref = self.obs_list[self.step_counter*2] + reward = self.cal_reward(ref, self.obs) * 0.005 + + + if self.player.behavior.is_ready("Get_Up") : + self.terminal = True + # 计算加权差异 + # reward = 0 + self.terminal = False + self.step_counter += 1 + + + return obs, reward, self.terminal, {} + + + def cal_reward(self,ref,obs): + reward = -0.5*np.linalg.norm(ref[23:39]*100 - obs[23:39]*100) -0.5*np.linalg.norm(ref[1:23]*30 - obs[1:23]*30) + + reward -= 2*np.linalg.norm(ref[20:23] - obs[20:23]) + return reward + +class Train(Train_Base): + def __init__(self, script) -> None: + super().__init__(script) + + def train(self, args): + + # --------------------------------------- Learning parameters + n_envs = min(14, os.cpu_count()) + n_steps_per_env = 128 # RolloutBuffer is of size (n_steps_per_env * n_envs) + minibatch_size = 64 # should be a factor of (n_steps_per_env * n_envs) + total_steps = 30000000 + learning_rate = 3e-4 + folder_name = f'Kick_20M_R{self.robot_type}' + model_path = f'./scripts/gyms/logs/{folder_name}/' + + # print("Model path:", model_path) + + # --------------------------------------- Run algorithm + def init_env(i_env): + def thunk(): + return Mimic(self.ip, self.server_p + i_env, self.monitor_p_1000 + i_env, self.robot_type, False) + + return thunk + + servers = Server(self.server_p, self.monitor_p_1000, n_envs + 1) # include 1 extra server for testing + + env = SubprocVecEnv([init_env(i) for i in range(n_envs)]) + eval_env = SubprocVecEnv([init_env(n_envs)]) + + try: + if "model_file" in args: # retrain + model = PPO.load(args["model_file"], env=env, device="cuda", n_envs=n_envs, n_steps=n_steps_per_env, + batch_size=minibatch_size, learning_rate=learning_rate) + else: # train new model + model = PPO("MlpPolicy", env=env, verbose=1, n_steps=n_steps_per_env, batch_size=minibatch_size, + learning_rate=learning_rate, device="cuda") + + model_path = self.learn_model(model, total_steps, model_path, eval_env=eval_env, + eval_freq=n_steps_per_env * 20, save_freq=n_steps_per_env * 20, + backup_env_file=__file__) + except KeyboardInterrupt: + sleep(1) # wait for child processes + print("\nctrl+c pressed, aborting...\n") + servers.kill() + return + + env.close() + eval_env.close() + servers.kill() + + def test(self, args): + # Uses different server and monitor ports + server = Server(self.server_p - 1, self.monitor_p, 1) + env = Mimic(self.ip, self.server_p - 1, self.monitor_p, self.robot_type, True) + model = PPO.load(args["model_file"], env=env) + + try: + self.export_model(args["model_file"], args["model_file"] + ".pkl", + False) # Export to pkl to create custom behavior + self.test_model(model, env, log_path=args["folder_dir"], model_path=args["folder_dir"]) + except KeyboardInterrupt: + print() + + env.close() + server.kill() \ No newline at end of file diff --git a/scripts/gyms/Kick_3M.py b/scripts/gyms/Kick_3M.py new file mode 100644 index 0000000..e1cece8 --- /dev/null +++ b/scripts/gyms/Kick_3M.py @@ -0,0 +1,359 @@ +import gym +import os +from random import random +from random import uniform +from time import sleep + +import numpy as np +from stable_baselines3 import PPO +from stable_baselines3.common.vec_env import SubprocVecEnv + +from agent.Base_Agent import Base_Agent as Agent +from behaviors.custom.Step.Step import Step +from behaviors.custom.Step.Step_Generator import Step_Generator +from math_ops.Math_Ops import Math_Ops as M +from math_ops.Math_Ops import Math_Ops as U +from scripts.commons.Server import Server +from scripts.commons.Train_Base import Train_Base +from world.commons.Draw import Draw + +''' +Objective: +Learn how to run forward using step primitive +---------- +- class Basic_Run: implements an OpenAI custom gym +- class Train: implements algorithms to train a new model or test an existing model +''' + + +class kick_moving_ball(gym.Env): + def __init__(self, ip, server_p, monitor_p, r_type, enable_draw) -> None: + self.isfallen = False + self.last_ball_vec = np.array([0, 0, 0]) + self.lock_flag = False + self.sleep = 0 + self.reset_time = None + self.behavior = None + self.path_manager = None + self.bias_dir = None + self.robot_type = r_type + self.kick_ori = 0 + self.terminal = False + # Args: Server IP, Agent Port, Monitor Port, Uniform No., Robot Type, Team Name, Enable Log, Enable Draw + self.player = Agent(ip, server_p, monitor_p, 1, self.robot_type, "Gym", True, enable_draw) + self.step_counter = 0 # to limit episode size + self.ball_pos = np.array([0, 0, 0]) + + self.step_obj: Step = self.player.behavior.get_custom_behavior_object("Step") # Step behavior object + + # State space + obs_size = 64 + self.obs = np.zeros(obs_size, np.float32) + self.observation_space = gym.spaces.Box(low=np.full(obs_size, -np.inf, np.float32), + high=np.full(obs_size, np.inf, np.float32), dtype=np.float32) + + # Action space + MAX = np.finfo(np.float32).max + self.no_of_actions = act_size = 16 + self.action_space = gym.spaces.Box(low=np.full(act_size, -MAX, np.float32), + high=np.full(act_size, MAX, np.float32), dtype=np.float32) + + # Place ball far away to keep landmarks in FoV (head follows ball while using Step behavior) + self.player.scom.unofficial_move_ball((14, 0, 0.042)) + + self.ball_x_center = 0.21 + self.ball_y_center = -0.045 + self.player.scom.unofficial_set_play_mode("PlayOn") + self.player.scom.unofficial_move_ball((0, 0, 0)) + + def observe(self, init=False): + w = self.player.world + r = self.player.world.robot + + if init: + self.step_counter = 0 + self.obs[0] = self.step_counter / 20 + self.obs[1] = r.loc_head_z * 3 + self.obs[2] = r.loc_head_z_vel / 2 + self.obs[3] = r.imu_torso_roll / 15 + self.obs[4] = r.imu_torso_pitch / 15 + self.obs[5:8] = r.gyro / 100 + self.obs[8:11] = r.acc / 10 + self.obs[11:17] = r.frp.get('lf', np.zeros(6)) * (10, 10, 10, 0.01, 0.01, 0.01) + self.obs[17:23] = r.frp.get('rf', np.zeros(6)) * (10, 10, 10, 0.01, 0.01, 0.01) + self.obs[23:39] = r.joints_position[2:18] / 100 + self.obs[39:55] = r.joints_speed[2:18] / 6.1395 + ball_rel_hip_center = self.player.inv_kinematics.torso_to_hip_transform(w.ball_rel_torso_cart_pos) + if init: + self.obs[55:58] = (0, 0, 0) + elif w.ball_is_visible: + self.obs[55:58] = (ball_rel_hip_center - self.obs[58:61]) * 10 + self.obs[58:61] = ball_rel_hip_center + self.obs[61] = np.linalg.norm(ball_rel_hip_center) * 2 + self.obs[62] = U.normalize_deg(self.kick_ori - r.imu_torso_orientation) / 30 + self.obs[63] = 0.7 + + return self.obs + + def sync(self): + ''' Run a single simulation step ''' + r = self.player.world.robot + self.player.scom.commit_and_send(r.get_command()) + self.player.scom.receive() + + def reset(self): + # print("reset") + ''' + Reset and stabilize the robot + Note: for some behaviors it would be better to reduce stabilization or add noise + ''' + self.isfallen = False + self.lock_flag = False + self.player.scom.unofficial_set_play_mode("PlayOn") + # 生成球的位置 + Gen_ball_pos = [random() * 5 - 9, random() * 6 - 3, 0] + + Gen_player_pos = ( + uniform(-1.5, 1.5) + Gen_ball_pos[0], + uniform(-1.5, 1.5) + Gen_ball_pos[1], + 0.5 + ) + self.ball_pos = np.array(Gen_ball_pos) + self.player.scom.unofficial_move_ball((Gen_ball_pos[0], Gen_ball_pos[1], Gen_ball_pos[2])) + self.sleep = 0 + self.step_counter = 0 + self.behavior = self.player.behavior + r = self.player.world.robot + w = self.player.world + t = w.time_local_ms + self.path_manager = self.player.path_manager + gait: Step_Generator = self.behavior.get_custom_behavior_object("Walk").env.step_generator + self.reset_time = t + + for _ in range(25): + self.player.scom.unofficial_beam(Gen_player_pos, 0) # beam player continuously (floating above ground) + self.player.behavior.execute("Zero_Bent_Knees") + self.sync() + + # beam player to ground + self.player.scom.unofficial_beam(Gen_player_pos, 0) + r.joints_target_speed[ + 0] = 0.01 # move head to trigger physics update (rcssserver3d bug when no joint is moving) + self.sync() + + # stabilize on ground + for _ in range(7): + self.player.behavior.execute("Zero_Bent_Knees") + self.sync() + # walk to ball + while True and w.time_local_ms - self.reset_time <= 50000: + direction = 0 + if self.player.behavior.is_ready("Get_Up"): + self.player.behavior.execute_to_completion("Get_Up") + self.bias_dir = [0.09, 0.1, 0.14, 0.08, 0.05][r.type] + biased_dir = M.normalize_deg(direction + self.bias_dir) # add bias to rectify direction + ang_diff = abs( + M.normalize_deg(biased_dir - r.loc_torso_orientation)) # the reset was learned with loc, not IMU + + next_pos, next_ori, dist_to_final_target = self.path_manager.get_path_to_ball( + x_ori=biased_dir, x_dev=-self.ball_x_center, y_dev=-self.ball_y_center, torso_ori=biased_dir) + + if (w.ball_last_seen > t - w.VISUALSTEP_MS and ang_diff < 13 and + t - w.ball_abs_pos_last_update < 100 and # ball absolute location is recent + dist_to_final_target < 0.1 and # if absolute ball position is updated + not gait.state_is_left_active and gait.state_current_ts == 2): # to avoid kicking immediately without preparation & stability + break + else: + dist = max(0.07, dist_to_final_target) + reset_walk = self.behavior.previous_behavior != "Walk" # reset walk if it wasn't the previous behavior + self.behavior.execute_sub_behavior("Walk", reset_walk, next_pos, True, next_ori, True, + dist) # target, is_target_abs, ori, is_ori_abs, distance + + self.sync() + + # memory variables + self.lastx = r.cheat_abs_pos[0] + self.act = np.zeros(self.no_of_actions, np.float32) + + return self.observe(True) + + def render(self, mode='human', close=False): + return + + def close(self): + Draw.clear_all() + self.player.terminate() + + def step(self, action): + r = self.player.world.robot + b = self.player.world.ball_abs_pos + w = self.player.world + t = w.time_local_ms + if self.step_counter < 1: # wing back + r.joints_target_speed[2:18] = action * [ + 2, + 2, + 1, + 1, + 0.2, + 0.2, + 0.2, + 0.2, + 2, + 2, + 1, + 1, + 1, + 1, + 1, + 1] + r.joints_target_speed[12] += 1 + r.joints_target_speed[6] += 3 + r.joints_target_speed[5] -= 1 + r.joints_target_speed[8] += 3 + r.joints_target_speed[9] -= 5 + else: # wing front + r.joints_target_speed[2:18] = action * [ + 6, + 6, + 3, + 3, + 6, + 6, + 6, + 6, + 6, + 6, + 2, + 2, + 1, + 1, + 1, + 1] + r.joints_target_speed[6] -= 3 + r.joints_target_speed[7] += 3 + r.joints_target_speed[9] += 3 + r.set_joints_target_position_direct([0, 1], np.array([0, -44], float), False) + + self.sync() # run simulation step + self.step_counter += 1 + self.lastx = r.cheat_abs_pos[0] + + # terminal state: the robot is falling or timeout + if self.step_counter > 4: + obs = self.observe() + waiting_steps = 0 + target = (15 - random() * 30, 10 - random() * 20) + # self.player.scom.unofficial_beam((-13.5, 0, 0.51), 0) + while waiting_steps < 300: # 假设额外等待5个步骤 + target_2d, _, distance_to_final_target = self.path_manager.get_path_to_target( + target, priority_unums=[], is_aggressive=False, timeout=3000) + self.player.behavior.execute("Walk", target_2d, True, None, True, + distance_to_final_target) # Args: target, is_target_abs, ori, is_ori_abs, distance + if self.player.behavior.is_ready("Get_Up"): + self.isfallen = True + self.sync() # 继续执行仿真步骤 + waiting_steps += 1 + dis = np.linalg.norm(self.ball_pos - w.ball_cheat_abs_pos) + + reward = 10 - abs(3 - dis) - abs(w.ball_cheat_abs_pos[1] - self.ball_pos[1]) + if self.isfallen or w.ball_cheat_abs_pos[0] < self.ball_pos[0]: + reward = 0 + # print(reward) + self.terminal = True + + else: + obs = self.observe() + reward = 0 + self.terminal = False + + return obs, reward, self.terminal, {} + + +class Train(Train_Base): + def __init__(self, script) -> None: + super().__init__(script) + + def train(self, args): + + # --------------------------------------- Learning parameters + n_envs = min(14, os.cpu_count()) + n_steps_per_env = 256 # RolloutBuffer is of size (n_steps_per_env * n_envs) + minibatch_size = 64 # should be a factor of (n_steps_per_env * n_envs) + total_steps = 30000000 + learning_rate = 3e-5 + folder_name = f'kick_moving_ball_R{self.robot_type}' + model_path = f'./scripts/gyms/logs/{folder_name}/' + + # print("Model path:", model_path) + + # --------------------------------------- Run algorithm + def init_env(i_env): + def thunk(): + return kick_moving_ball(self.ip, self.server_p + i_env, self.monitor_p_1000 + i_env, self.robot_type, + False) + + return thunk + + servers = Server(self.server_p, self.monitor_p_1000, n_envs + 1) # include 1 extra server for testing + + env = SubprocVecEnv([init_env(i) for i in range(n_envs)]) + eval_env = SubprocVecEnv([init_env(n_envs)]) + + try: + if "model_file" in args: # retrain + model = PPO.load(args["model_file"], env=env, device="cuda", n_envs=n_envs, n_steps=n_steps_per_env, + batch_size=minibatch_size, learning_rate=learning_rate) + else: # train new model + model = PPO("MlpPolicy", env=env, verbose=1, n_steps=n_steps_per_env, batch_size=minibatch_size, + learning_rate=learning_rate, device="cuda") + + model_path = self.learn_model(model, total_steps, model_path, eval_env=eval_env, + eval_freq=n_steps_per_env * 10, save_freq=n_steps_per_env * 100, + backup_env_file=__file__) + except KeyboardInterrupt: + sleep(1) # wait for child processes + print("\nctrl+c pressed, aborting...\n") + servers.kill() + return + + env.close() + eval_env.close() + servers.kill() + + def test(self, args): + + # Uses different server and monitor ports + server = Server(self.server_p - 1, self.monitor_p, 1) + env = kick_moving_ball(self.ip, self.server_p - 1, self.monitor_p, self.robot_type, True) + model = PPO.load(args["model_file"], env=env) + + try: + self.export_model(args["model_file"], args["model_file"] + ".pkl", + False) # Export to pkl to create custom behavior + self.test_model(model, env, log_path=args["folder_dir"], model_path=args["folder_dir"]) + except KeyboardInterrupt: + print() + + env.close() + server.kill() + + +''' +The learning process takes several hours. +A video with the results can be seen at: +https://imgur.com/a/dC2V6Et + +Stats: +- Avg. reward: 7.7 +- Avg. ep. length: 5.5s (episode is limited to 6s) +- Max. reward: 9.3 (speed: 1.55m/s) + +State space: +- Composed of all joint positions + torso height +- Stage of the underlying Step behavior + +Reward: +- Displacement in the x-axis (it can be negative) +- Note that cheat and visual data is only updated every 3 steps +''' diff --git a/scripts/gyms/Kick_5M.py b/scripts/gyms/Kick_5M.py new file mode 100644 index 0000000..96f1018 --- /dev/null +++ b/scripts/gyms/Kick_5M.py @@ -0,0 +1,343 @@ +from random import random + +from agent.Base_Agent import Base_Agent as Agent +from behaviors.custom.Step.Step import Step +from world.commons.Draw import Draw +from stable_baselines3 import PPO +from stable_baselines3.common.vec_env import SubprocVecEnv +from scripts.commons.Server import Server +from scripts.commons.Train_Base import Train_Base +from time import sleep +import os, gym +import numpy as np +from math_ops.Math_Ops import Math_Ops as U +from math_ops.Math_Ops import Math_Ops as M +from behaviors.custom.Step.Step_Generator import Step_Generator + +''' +Objective: +Learn how to run forward using step primitive +---------- +- class Basic_Run: implements an OpenAI custom gym +- class Train: implements algorithms to train a new model or test an existing model +''' + + +class Short_Kick(gym.Env): + def __init__(self, ip, server_p, monitor_p, r_type, enable_draw) -> None: + self.lock_flag = False + self.sleep = 0 + self.reset_time = None + self.behavior = None + self.path_manager = None + self.bias_dir = None + self.robot_type = r_type + self.kick_ori = 0 + self.terminal = False + # Args: Server IP, Agent Port, Monitor Port, Uniform No., Robot Type, Team Name, Enable Log, Enable Draw + self.player = Agent(ip, server_p, monitor_p, 1, self.robot_type, "Gym", True, enable_draw) + self.step_counter = 0 # to limit episode size + self.ball_pos = np.array([0, 0, 0]) + + self.step_obj: Step = self.player.behavior.get_custom_behavior_object("Step") # Step behavior object + + # State space + obs_size = 64 + self.obs = np.zeros(obs_size, np.float32) + self.observation_space = gym.spaces.Box(low=np.full(obs_size, -np.inf, np.float32), + high=np.full(obs_size, np.inf, np.float32), dtype=np.float32) + + # Action space + MAX = np.finfo(np.float32).max + self.no_of_actions = act_size = 16 + self.action_space = gym.spaces.Box(low=np.full(act_size, -MAX, np.float32), + high=np.full(act_size, MAX, np.float32), dtype=np.float32) + + # Place ball far away to keep landmarks in FoV (head follows ball while using Step behavior) + self.player.scom.unofficial_move_ball((14, 0, 0.042)) + + self.ball_x_center = 0.21 + self.ball_y_center = -0.045 + self.player.scom.unofficial_set_play_mode("PlayOn") + self.player.scom.unofficial_move_ball((0, 0, 0)) + + def observe(self, init=False): + w = self.player.world + r = self.player.world.robot + + if init: + self.step_counter = 0 + self.obs[0] = self.step_counter / 20 + self.obs[1] = r.loc_head_z * 3 + self.obs[2] = r.loc_head_z_vel / 2 + self.obs[3] = r.imu_torso_roll / 15 + self.obs[4] = r.imu_torso_pitch / 15 + self.obs[5:8] = r.gyro / 100 + self.obs[8:11] = r.acc / 10 + self.obs[11:17] = r.frp.get('lf', np.zeros(6)) * (10, 10, 10, 0.01, 0.01, 0.01) + self.obs[17:23] = r.frp.get('rf', np.zeros(6)) * (10, 10, 10, 0.01, 0.01, 0.01) + self.obs[23:39] = r.joints_position[2:18] / 100 + self.obs[39:55] = r.joints_speed[2:18] / 6.1395 + ball_rel_hip_center = self.player.inv_kinematics.torso_to_hip_transform(w.ball_rel_torso_cart_pos) + if init: + self.obs[55:58] = (0, 0, 0) + elif w.ball_is_visible: + self.obs[55:58] = (ball_rel_hip_center - self.obs[58:61]) * 10 + self.obs[58:61] = ball_rel_hip_center + self.obs[61] = np.linalg.norm(ball_rel_hip_center) * 2 + self.obs[62] = U.normalize_deg(self.kick_ori - r.imu_torso_orientation) / 30 + self.obs[63] = 0.7 + ''' + Expected observations for walking parameters/state (example): + Time step R 0 1 2 0 1 2 3 4 + Progress 1 0 .5 1 0 .25 .5 .75 1 + Left leg active T F F F T T T T T + Parameters A A A B B B B B C + Example note: (A) has a step duration of 3ts, (B) has a step duration of 5ts + ''' + return self.obs + + def sync(self): + ''' Run a single simulation step ''' + r = self.player.world.robot + self.player.scom.commit_and_send(r.get_command()) + self.player.scom.receive() + + def reset(self): + # print("reset") + ''' + Reset and stabilize the robot + Note: for some behaviors it would be better to reduce stabilization or add noise + ''' + self.lock_flag = False + self.player.scom.unofficial_set_play_mode("PlayOn") + Gen_ball_pos = [random() * 5 - 9, random() * 6 - 3, 0] + Gen_player_pos = (random() * 3 + Gen_ball_pos[0], random() * 3 + Gen_ball_pos[1], 0.5) + self.ball_pos = np.array(Gen_ball_pos) + self.player.scom.unofficial_move_ball((Gen_ball_pos[0], Gen_ball_pos[1], Gen_ball_pos[2])) + self.sleep = 0 + self.step_counter = 0 + self.behavior = self.player.behavior + r = self.player.world.robot + w = self.player.world + t = w.time_local_ms + self.path_manager = self.player.path_manager + gait: Step_Generator = self.behavior.get_custom_behavior_object("Walk").env.step_generator + self.reset_time = t + + for _ in range(25): + self.player.scom.unofficial_beam(Gen_player_pos, 0) # beam player continuously (floating above ground) + self.player.behavior.execute("Zero_Bent_Knees") + self.sync() + + # beam player to ground + self.player.scom.unofficial_beam(Gen_player_pos, 0) + r.joints_target_speed[ + 0] = 0.01 # move head to trigger physics update (rcssserver3d bug when no joint is moving) + self.sync() + + # stabilize on ground + for _ in range(7): + self.player.behavior.execute("Zero_Bent_Knees") + self.sync() + # walk to ball + while True and w.time_local_ms - self.reset_time <= 50000: + direction = 0 + if self.player.behavior.is_ready("Get_Up"): + self.player.behavior.execute_to_completion("Get_Up") + self.bias_dir = [0.09, 0.1, 0.14, 0.08, 0.05][r.type] + biased_dir = M.normalize_deg(direction + self.bias_dir) # add bias to rectify direction + ang_diff = abs( + M.normalize_deg(biased_dir - r.loc_torso_orientation)) # the reset was learned with loc, not IMU + + next_pos, next_ori, dist_to_final_target = self.path_manager.get_path_to_ball( + x_ori=biased_dir, x_dev=-self.ball_x_center, y_dev=-self.ball_y_center, torso_ori=biased_dir) + if (w.ball_last_seen > t - w.VISUALSTEP_MS and ang_diff < 5 and + t - w.ball_abs_pos_last_update < 100 and # ball absolute location is recent + dist_to_final_target < 0.035 and # if absolute ball position is updated + not gait.state_is_left_active and gait.state_current_ts == 2): # to avoid kicking immediately without preparation & stability + break + else: + dist = max(0.07, dist_to_final_target) + reset_walk = self.behavior.previous_behavior != "Walk" # reset walk if it wasn't the previous behavior + self.behavior.execute_sub_behavior("Walk", reset_walk, next_pos, True, next_ori, True, + dist) # target, is_target_abs, ori, is_ori_abs, distance + + self.sync() + + # memory variables + self.lastx = r.cheat_abs_pos[0] + self.act = np.zeros(self.no_of_actions, np.float32) + + return self.observe(True) + + def render(self, mode='human', close=False): + return + + def close(self): + Draw.clear_all() + self.player.terminate() + + def step(self, action): + r = self.player.world.robot + b = self.player.world.ball_abs_pos + w = self.player.world + t = w.time_local_ms + if self.step_counter < 2: + r.joints_target_speed[2:18] = action * [ + 2, + 2, + 1, + 1, + 0.2, + 0.2, + 0.2, + 0.2, + 2, + 2, + 1, + 1, + 1, + 1, + 1, + 1] + r.joints_target_speed[12] += 1 + r.joints_target_speed[6] += 3 + r.joints_target_speed[5] -= 1 + r.joints_target_speed[8] += 3 + r.joints_target_speed[9] -= 5 + else: + r.joints_target_speed[2:18] = action * [ + 6, + 6, + 3, + 3, + 6, + 6, + 6, + 6, + 6, + 6, + 2, + 2, + 1, + 1, + 1, + 1] + r.joints_target_speed[6] -= 3 + r.joints_target_speed[7] += 3 + r.joints_target_speed[9] += 3 + r.joints_target_speed[11] -= 1 + r.set_joints_target_position_direct([0, 1], np.array([0, -44], float), False) + + self.sync() # run simulation step + self.step_counter += 1 + self.lastx = r.cheat_abs_pos[0] + + # terminal state: the robot is falling or timeout + if self.step_counter > 13: + obs = self.observe() + self.player.scom.unofficial_beam((-14.5, 0, 0.51), 0) # beam player continuously (floating above ground) + waiting_steps = 0 + while waiting_steps < 300: # 假设额外等待5个步骤 + self.sync() # 继续执行仿真步骤 + waiting_steps += 1 + dis = np.linalg.norm(self.ball_pos - w.ball_cheat_abs_pos) + reward = 5 - abs(5 - dis) - abs(w.ball_cheat_abs_pos[1] - self.ball_pos[1]) + # print(reward) + self.terminal = True + + else: + obs = self.observe() + reward = 0 + self.terminal = False + + return obs, reward, self.terminal, {} + + +class Train(Train_Base): + def __init__(self, script) -> None: + super().__init__(script) + + def train(self, args): + + # --------------------------------------- Learning parameters + n_envs = min(12, os.cpu_count()) + n_steps_per_env = 128 # RolloutBuffer is of size (n_steps_per_env * n_envs) + minibatch_size = 64 # should be a factor of (n_steps_per_env * n_envs) + total_steps = 30000000 + learning_rate = 3e-4 + folder_name = f'Short_Kick_R{self.robot_type}' + model_path = f'./scripts/gyms/logs/{folder_name}/' + + # print("Model path:", model_path) + + # --------------------------------------- Run algorithm + def init_env(i_env): + def thunk(): + return Short_Kick(self.ip, self.server_p + i_env, self.monitor_p_1000 + i_env, self.robot_type, False) + + return thunk + + servers = Server(self.server_p, self.monitor_p_1000, n_envs + 1) # include 1 extra server for testing + + env = SubprocVecEnv([init_env(i) for i in range(n_envs)]) + eval_env = SubprocVecEnv([init_env(n_envs)]) + + try: + if "model_file" in args: # retrain + model = PPO.load(args["model_file"], env=env, device="cuda", n_envs=n_envs, n_steps=n_steps_per_env, + batch_size=minibatch_size, learning_rate=learning_rate) + else: # train new model + model = PPO("MlpPolicy", env=env, verbose=1, n_steps=n_steps_per_env, batch_size=minibatch_size, + learning_rate=learning_rate, device="cuda") + + model_path = self.learn_model(model, total_steps, model_path, eval_env=eval_env, + eval_freq=n_steps_per_env * 20, save_freq=n_steps_per_env * 200, + backup_env_file=__file__) + except KeyboardInterrupt: + sleep(1) # wait for child processes + print("\nctrl+c pressed, aborting...\n") + servers.kill() + return + + env.close() + eval_env.close() + servers.kill() + + def test(self, args): + + # Uses different server and monitor ports + server = Server(self.server_p - 1, self.monitor_p, 1) + env = Short_Kick(self.ip, self.server_p - 1, self.monitor_p, self.robot_type, True) + model = PPO.load(args["model_file"], env=env) + + try: + self.export_model(args["model_file"], args["model_file"] + ".pkl", + False) # Export to pkl to create custom behavior + self.test_model(model, env, log_path=args["folder_dir"], model_path=args["folder_dir"]) + except KeyboardInterrupt: + print() + + env.close() + server.kill() + + +''' +The learning process takes several hours. +A video with the results can be seen at: +https://imgur.com/a/dC2V6Et + +Stats: +- Avg. reward: 7.7 +- Avg. ep. length: 5.5s (episode is limited to 6s) +- Max. reward: 9.3 (speed: 1.55m/s) + +State space: +- Composed of all joint positions + torso height +- Stage of the underlying Step behavior + +Reward: +- Displacement in the x-axis (it can be negative) +- Note that cheat and visual data is only updated every 3 steps +''' diff --git a/scripts/gyms/__pycache__/Dribble.cpython-313.pyc b/scripts/gyms/__pycache__/Dribble.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5d8c6f68a9ef21cdbb208e06583811ab487c8668 GIT binary patch literal 23320 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 literal 0 HcmV?d00001 diff --git a/scripts/utils/Beam.py b/scripts/utils/Beam.py new file mode 100644 index 0000000..5d71647 --- /dev/null +++ b/scripts/utils/Beam.py @@ -0,0 +1,60 @@ + +from agent.Base_Agent import Base_Agent as Agent +from scripts.commons.Script import Script +from time import sleep + + +class Beam(): + def __init__(self, script:Script) -> None: + self.script = script + + def ask_for_input(self,prompt, default): + try: + inp=input(prompt) + return float(inp) + except ValueError: + if inp != '': + print("Illegal input:", inp, "\n") + return default + + def beam_and_update(self,x,y,rot): + r = self.player.world.robot + d = self.player.world.draw + + d.annotation((x,y,0.7), f"x:{x} y:{y} r:{rot}", d.Color.yellow, "pos_label") + + self.player.scom.unofficial_beam((x,y,r.beam_height),rot) + for _ in range(10): # run multiple times to beam and then simulate eventual collisions (e.g. goal posts) + sleep(0.03) + self.player.behavior.execute("Zero") + self.player.scom.commit_and_send( r.get_command() ) + self.player.scom.receive() + + def execute(self): + + a = self.script.args + self.player = Agent(a.i, a.p, a.m, a.u, a.r, a.t) # Args: Server IP, Agent Port, Monitor Port, Uniform No., Robot Type, Team Name + d = self.player.world.draw + + self.player.scom.unofficial_set_play_mode("PlayOn") + + # Draw grid + for x in range(-15,16): + for y in range(-10,11): + d.point((x,y), 6, d.Color.red, "grid", False) + d.flush("grid") + + for _ in range(10): # Initialize + self.player.scom.send() + self.player.scom.receive() + + print("\nBeam player to coordinates + orientation:") + + x=y=a=0 + while True: # Beam self.player to given position + x = self.ask_for_input(f"\nInput x coordinate ('' to send {x:5} again, ctrl+c to return): ",x) + self.beam_and_update(x,y,a) + y = self.ask_for_input( f"Input y coordinate ('' to send {y:5} again, ctrl+c to return): ",y) + self.beam_and_update(x,y,a) + a = self.ask_for_input( f"Orientation -180 to 180 ('' to send {a:5} again, ctrl+c to return): ",a) + self.beam_and_update(x,y,a) \ No newline at end of file diff --git a/scripts/utils/Behaviors.py b/scripts/utils/Behaviors.py new file mode 100644 index 0000000..653c923 --- /dev/null +++ b/scripts/utils/Behaviors.py @@ -0,0 +1,55 @@ +from agent.Base_Agent import Base_Agent as Agent +from scripts.commons.Script import Script +from scripts.commons.UI import UI + +class Behaviors(): + + def __init__(self,script:Script) -> None: + self.script = script + self.player : Agent = None + + def ask_for_behavior(self): + names, descriptions = self.player.behavior.get_all_behaviors() + + UI.print_table( [names,descriptions], ["Behavior Name","Description"], numbering=[True,False]) + choice, is_str_opt = UI.read_particle('Choose behavior ("" to skip 2 time steps, "b" to beam, ctrl+c to return): ',["","b"],int,[0,len(names)]) + if is_str_opt: return choice #skip 2 time steps or quit + return names[choice] + + def sync(self): + self.player.scom.commit_and_send( self.player.world.robot.get_command() ) + self.player.scom.receive() + + def beam(self): + self.player.scom.unofficial_beam((-2.5,0,self.player.world.robot.beam_height),0) + for _ in range(5): + self.sync() + + def execute(self): + + a = self.script.args + self.player = Agent(a.i, a.p, a.m, a.u, a.r, a.t) # Args: Server IP, Agent Port, Monitor Port, Uniform No., Robot Type, Team Name + behavior = self.player.behavior + + self.beam() + self.player.scom.unofficial_set_play_mode("PlayOn") + + # Special behaviors + special_behaviors = {"Step":(), "Basic_Kick":(0,), "Walk":((0.5,0),False,0,False,None), "Dribble":(None,None)} + + while True: + behavior_name = self.ask_for_behavior() + if behavior_name == 0: # skip 2 time steps (user request) + self.sync() + self.sync() + elif behavior_name == 1: # beam + self.beam() + else: + if behavior_name in special_behaviors: # not using execute_to_completion to abort behavior after a timeout + duration = UI.read_int("For how many time steps [1,1000]? ", 1, 1001) + for _ in range(duration): + if behavior.execute(behavior_name, *special_behaviors[behavior_name]): + break # break if behavior ends + self.sync() + else: + behavior.execute_to_completion(behavior_name) \ No newline at end of file diff --git a/scripts/utils/Drawings.py b/scripts/utils/Drawings.py new file mode 100644 index 0000000..2ffddd4 --- /dev/null +++ b/scripts/utils/Drawings.py @@ -0,0 +1,35 @@ +from time import sleep +from world.commons.Draw import Draw + + +class Drawings(): + + def __init__(self,script) -> None: + self.script = script + + def execute(self): + + # Creating a draw object is done automatically for each agent + # This is a shortcut to draw shapes without creating an agent + # Usually, we can access the object through player.world.draw + a = self.script.args + draw = Draw(True, 0, a.i, 32769) + + print("\nPress ctrl+c to return.") + + while True: + for i in range(100): + sleep(0.02) + + draw.circle( (0,0),i/10,2, Draw.Color.green_light,"green") + draw.circle( (0,0),i/9,2, Draw.Color.red,"red") + draw.sphere( (0,0,5-i/20),0.2, Draw.Color.red,"ball" ) + draw.annotation((0,0,1), "Hello!", Draw.Color.cyan, "text") + draw.arrow( (0,0,5), (0,0,5-i/25), 0.5, 4, Draw.Color.get(127,50,255), "my_arrow") + + #draw pyramid + draw.polygon(((2,0,0),(3,0,0),(3,1,0),(2,1,0)), Draw.Color.blue, 255, "solid", False) + draw.line( (2,0,0), (2.5,0.5,1), 2, Draw.Color.cyan, "solid", False) + draw.line( (3,0,0), (2.5,0.5,1), 2, Draw.Color.cyan, "solid", False) + draw.line( (2,1,0), (2.5,0.5,1), 2, Draw.Color.cyan, "solid", False) + draw.line( (3,1,0), (2.5,0.5,1), 2, Draw.Color.cyan, "solid", True) \ No newline at end of file diff --git a/scripts/utils/Dribble.py b/scripts/utils/Dribble.py new file mode 100644 index 0000000..fb776e8 --- /dev/null +++ b/scripts/utils/Dribble.py @@ -0,0 +1,54 @@ +from agent.Agent import Agent +from agent.Base_Agent import Base_Agent +from scripts.commons.Script import Script +import numpy as np + +''' +Objective: +---------- +Dribble and score +''' + +class Dribble(): + def __init__(self, script:Script) -> None: + self.script = script + + def execute(self): + + a = self.script.args + + # Args: Server IP, Agent Port, Monitor Port, Uniform No., [Robot Type] (for Base_Agent), Team name, Enable Log, Enable Draw + self.script.batch_create(Base_Agent, ((a.i,a.p,a.m,a.u,a.r,a.t,True,True),)) # one dribbler + self.script.batch_create(Agent, ((a.i,a.p,a.m,u,"Opponent",False,False) for u in range(1,2))) # 1 opponent (normal agent) + + p : Base_Agent = self.script.players[0] + p.path_manager.draw_options(enable_obstacles=True, enable_path=True) + + behavior = p.behavior + w = p.world + r = w.robot + d = w.draw + + p.scom.unofficial_beam((-3,0,r.beam_height),0) + p.scom.unofficial_set_play_mode("PlayOn") + print("\nPress ctrl+c to return.") + + while True: + + if w.play_mode == w.M_THEIR_KICKOFF: + p.scom.unofficial_set_play_mode("PlayOn") + + # execute dribbler + if behavior.is_ready("Get_Up") or w.play_mode_group in [w.MG_ACTIVE_BEAM, w.MG_PASSIVE_BEAM]: + p.scom.unofficial_beam((*(w.ball_abs_pos[:2]-(1,0)),r.beam_height),0) + behavior.execute("Zero_Bent_Knees") + else: + behavior.execute("Dribble",None,None) + d.annotation(r.loc_head_position+(0,0,0.2),f"{np.linalg.norm(r.get_head_abs_vel(40)[:2]):.2f}",d.Color.white,"vel_annotation") + p.scom.commit_and_send( r.get_command() ) + + # execute opponents as normal agents + self.script.batch_execute_agent(slice(1,None)) + + # all players wait for server to send feedback + self.script.batch_receive() \ No newline at end of file diff --git a/scripts/utils/Fwd_Kinematics.py b/scripts/utils/Fwd_Kinematics.py new file mode 100644 index 0000000..af6f6a8 --- /dev/null +++ b/scripts/utils/Fwd_Kinematics.py @@ -0,0 +1,115 @@ +from agent.Base_Agent import Base_Agent as Agent +from scripts.commons.Script import Script +from world.commons.Draw import Draw +import numpy as np + +class Fwd_Kinematics(): + + def __init__(self,script:Script) -> None: + self.script = script + self.cycle_duration = 200 #steps + + def draw_cycle(self): + + #Draw position of body parts + for _ in range(self.cycle_duration): + self.script.batch_execute_behavior("Squat") + self.script.batch_commit_and_send() + self.script.batch_receive() + + p : Agent + for p in self.script.players: + if p.world.vision_is_up_to_date and not p.world.robot.loc_is_up_to_date: + p.world.draw.annotation(p.world.robot.cheat_abs_pos, "Not enough visual data! Using IMU", Draw.Color.red,"localization") + + for key, val in p.world.robot.body_parts.items(): + rp = val.transform.get_translation() + pos = p.world.robot.loc_head_to_field_transform(rp,False) + label_rp = np.array([rp[0]-0.0001,rp[1]*0.5,0]) + label_rp /= np.linalg.norm(label_rp) / 0.4 #labels at 0.4m from body part + label = p.world.robot.loc_head_to_field_transform(rp+label_rp,False) + p.world.draw.line(pos,label,2,Draw.Color.green_light,key,False) + p.world.draw.annotation(label,key,Draw.Color.red,key) + + rp = p.world.robot.body_parts['lfoot'].transform((0.08,0,0)) + ap = p.world.robot.loc_head_to_field_transform(rp,False) + p.world.draw.line(ap,ap+(0,0,0.1),1,Draw.Color.red,"soup",False) + rp = p.world.robot.body_parts['lfoot'].transform((-0.08,0,0)) + ap = p.world.robot.loc_head_to_field_transform(rp,False) + p.world.draw.line(ap,ap+(0,0,0.1),1,Draw.Color.red,"soup",False) + rp = p.world.robot.body_parts['lfoot'].transform((0,0.04,0)) + ap = p.world.robot.loc_head_to_field_transform(rp,False) + p.world.draw.line(ap,ap+(0,0,0.1),1,Draw.Color.red,"soup",False) + rp = p.world.robot.body_parts['lfoot'].transform((0,-0.04,0)) + ap = p.world.robot.loc_head_to_field_transform(rp,False) + p.world.draw.line(ap,ap+(0,0,0.1),1,Draw.Color.red,"soup",True) + + Draw.clear_all() + + #Draw position of joints + for _ in range(self.cycle_duration): + self.script.batch_execute_behavior("Squat") + self.script.batch_commit_and_send() + self.script.batch_receive() + + for p in self.script.players: + if p.world.vision_is_up_to_date and not p.world.robot.loc_is_up_to_date: + p.world.draw.annotation(p.world.robot.cheat_abs_pos, "Not enough visual data! Using IMU", Draw.Color.red,"localization") + + zstep = 0.05 + label_z = [0,0,0,0,zstep,zstep,2*zstep,2*zstep,0,0,0,0,zstep,zstep,0,0,zstep,zstep,2*zstep,2*zstep,3*zstep,3*zstep,0,0] + for j, transf in enumerate(p.world.robot.joints_transform): + rp = transf.get_translation() + pos = p.world.robot.loc_head_to_field_transform(rp,False) + j_name = str(j) + label_rp = np.array([rp[0]-0.0001,rp[1]*0.5,0]) + label_rp /= np.linalg.norm(label_rp) / 0.4 #labels at 0.4m from body part + label_rp += (0,0,label_z[j]) + label = p.world.robot.loc_head_to_field_transform(rp+label_rp,False) + p.world.draw.line( pos,label,2,Draw.Color.green_light,j_name,False) + p.world.draw.annotation( label,j_name,Draw.Color.cyan,j_name) + + + Draw.clear_all() + + #Draw orientation of body parts + for _ in range(self.cycle_duration): + self.script.batch_execute_behavior("Squat") + self.script.batch_commit_and_send() + self.script.batch_receive() + + p : Agent + for p in self.script.players: + if p.world.vision_is_up_to_date and not p.world.robot.loc_is_up_to_date: + p.world.draw.annotation(p.world.robot.cheat_abs_pos, "Not enough visual data! Using IMU", Draw.Color.red,"localization") + + for key in p.world.robot.body_parts: + #Select only some body parts + if key not in ['head', 'torso', 'llowerarm', 'rlowerarm', 'lthigh', 'rthigh', 'lshank', 'rshank', 'lfoot', 'rfoot']: continue + bpart_abs_pos = p.world.robot.get_body_part_to_field_transform(key).translate((0.1,0,0)) #10cm in front of body part + x_axis = bpart_abs_pos((0.05,0,0),False) + y_axis = bpart_abs_pos((0,0.05,0),False) + z_axis = bpart_abs_pos((0,0,0.05),False) + axes_0 = bpart_abs_pos.get_translation() + p.world.draw.line( axes_0,x_axis,2,Draw.Color.green_light,key,False) + p.world.draw.line( axes_0,y_axis,2,Draw.Color.blue,key,False) + p.world.draw.line( axes_0,z_axis,2,Draw.Color.red,key) + + Draw.clear_all() + + + + def execute(self): + + a = self.script.args + + # Args: Server IP, Agent Port, Monitor Port, Uniform No., Robot Type, Team Name, Enable Log, Enable Draw + self.script.batch_create(Agent, ((a.i,a.p,a.m,u,u-1,a.t,True,True) for u in range(1,6)) ) + + #Beam players + self.script.batch_unofficial_beam( [(-2,i*4-10,0.5,i*45) for i in range(5)] ) + + print("\nPress ctrl+c to return.") + + while True: + self.draw_cycle() \ No newline at end of file diff --git a/scripts/utils/Get_Up.py b/scripts/utils/Get_Up.py new file mode 100644 index 0000000..f95464c --- /dev/null +++ b/scripts/utils/Get_Up.py @@ -0,0 +1,45 @@ +from agent.Base_Agent import Base_Agent as Agent +from itertools import count +from scripts.commons.Script import Script +import numpy as np + +''' +Objective: +---------- +Fall and get up +''' + +class Get_Up(): + def __init__(self, script:Script) -> None: + self.script = script + self.player : Agent = None + + def sync(self): + r = self.player.world.robot + self.player.scom.commit_and_send( r.get_command() ) + self.player.scom.receive() + + def execute(self): + + a = self.script.args + player = self.player = Agent(a.i, a.p, a.m, a.u, a.r, a.t) # Args: Server IP, Agent Port, Monitor Port, Uniform No., Robot Type, Team Name + behavior = player.behavior + r = player.world.robot + + player.scom.commit_beam((-3,0),0) + print("\nPress ctrl+c to return.") + + for i in count(): + rnd = np.random.uniform(-6,6,r.no_of_joints) + + # Fall + while r.loc_head_z > 0.3 and r.imu_torso_inclination < 50: + if i < 4: + behavior.execute(["Fall_Front","Fall_Back","Fall_Left","Fall_Right"][i % 4]) # First, fall deterministically + else: + r.joints_target_speed[:] = rnd # Second, fall randomly + self.sync() + + # Get up + behavior.execute_to_completion("Get_Up") + behavior.execute_to_completion("Zero_Bent_Knees") diff --git a/scripts/utils/IMU.py b/scripts/utils/IMU.py new file mode 100644 index 0000000..8fedfd1 --- /dev/null +++ b/scripts/utils/IMU.py @@ -0,0 +1,179 @@ +from agent.Base_Agent import Base_Agent as Agent +from math_ops.Matrix_3x3 import Matrix_3x3 +from math_ops.Matrix_4x4 import Matrix_4x4 +from scripts.commons.Script import Script +from world.commons.Draw import Draw +from world.Robot import Robot +import numpy as np + +''' +Objective: +---------- +Demonstrate the accuracy of the IMU +Robot.imu_(...) variables are based on the visual localizer algorithm and the IMU when no visual data is available. +If visual data is not available for longer than 0.2 seconds, the robot's position is frozen and the velocity decays to zero. +The rotation computed by the IMU is so accurate that it is never frozen, no matter how long the robot goes without visual data. +It is almost always safe to use IMU data for rotation. +Known issues: the accelerometer is not reliable in the presence of "instant" acceleration peaks, due to its low sample rate (50Hz) + this limitation impacts the translation estimation during crashes (e.g. falling, crashing against other players) +''' + +class IMU(): + + def __init__(self,script:Script) -> None: + self.script = script + self.player : Agent = None + self.cycle = 0 + + self.imu_torso_to_field_rotation = [Matrix_3x3() for _ in range(3)] + self.imu_torso_to_field_transform = [Matrix_4x4() for _ in range(3)] + self.imu_head_to_field_transform = [Matrix_4x4() for _ in range(3)] + self.imu_torso_position = np.zeros((3,3)) + self.imu_torso_velocity = np.zeros((3,3)) + self.imu_torso_acceleration = np.zeros((3,3)) + self.imu_torso_next_position = np.zeros((3,3)) + self.imu_torso_next_velocity = np.zeros((3,3)) + self.imu_CoM_position = np.zeros((3,3)) + self.colors = [Draw.Color.green_light, Draw.Color.yellow, Draw.Color.red] + + def act(self): + r = self.player.world.robot + joint_indices = [r.J_LLEG_PITCH, + r.J_LKNEE, + r.J_LFOOT_PITCH, + r.J_LARM_ROLL, + r.J_RLEG_PITCH, + r.J_RKNEE, + r.J_RFOOT_PITCH, + r.J_RARM_ROLL] + + amplitude = [1,0.93,1,1,1][r.type] + + self.cycle += 1 + if self.cycle < 50: + r.set_joints_target_position_direct(joint_indices, np.array([32+10,-64,32, 45, 40+10,-80,40, 0])*amplitude) + elif self.cycle < 100: + r.set_joints_target_position_direct(joint_indices, np.array([ -10, 0, 0, 0, -10, 0, 0, 0])*amplitude) + elif self.cycle < 150: + r.set_joints_target_position_direct(joint_indices, np.array([40+10,-80,40, 0, 32+10,-64,32, 45])*amplitude) + elif self.cycle < 200: + r.set_joints_target_position_direct(joint_indices, np.array([ -10, 0, 0, 0, -10, 0, 0, 0])*amplitude) + else: + self.cycle = 0 + + self.player.scom.commit_and_send( r.get_command() ) + self.player.scom.receive() + + def act2(self): + r = self.player.world.robot + self.player.behavior.execute("Walk", (0.2,0), False, 5, False, None ) # Args: target, is_target_abs, ori, is_ori_abs, distance + self.player.scom.commit_and_send( r.get_command() ) + self.player.scom.receive() + + def draw_player_reference_frame(self,i): + pos = self.imu_torso_position[i] + xvec = self.imu_torso_to_field_rotation[i].multiply((1,0,0)) + pos + yvec = self.imu_torso_to_field_rotation[i].multiply((0,1,0)) + pos + zvec = self.imu_torso_to_field_rotation[i].multiply((0,0,1)) + pos + self.player.world.draw.arrow(pos, xvec, 0.2, 2, self.colors[i], "IMU"+str(i), False) + self.player.world.draw.arrow(pos, yvec, 0.2, 2, self.colors[i], "IMU"+str(i), False) + self.player.world.draw.arrow(pos, zvec, 0.2, 2, self.colors[i], "IMU"+str(i), False) + self.player.world.draw.annotation(xvec, "x", Draw.Color.white, "IMU"+str(i), False) + self.player.world.draw.annotation(yvec, "y", Draw.Color.white, "IMU"+str(i), False) + self.player.world.draw.annotation(zvec, "z", Draw.Color.white, "IMU"+str(i), False) + self.player.world.draw.sphere(self.imu_CoM_position[i],0.04,self.colors[i],"IMU"+str(i), True) + + + def compute_local_IMU(self): + r = self.player.world.robot + g = r.gyro / 50 # convert degrees per second to degrees per step + self.imu_torso_to_field_rotation[2].multiply( Matrix_3x3.from_rotation_deg(g), in_place=True, reverse_order=True) + self.imu_torso_position[2][:] = self.imu_torso_next_position[2] + if self.imu_torso_position[2][2] < 0: self.imu_torso_position[2][2] = 0 #limit z coordinate to positive values + self.imu_torso_velocity[2][:] = self.imu_torso_next_velocity[2] + + # convert proper acceleration to coordinate acceleration and fix rounding bias + self.imu_torso_acceleration[2] = self.imu_torso_to_field_rotation[2].multiply(r.acc) + Robot.GRAVITY + self.imu_torso_to_field_transform[2] = Matrix_4x4.from_3x3_and_translation(self.imu_torso_to_field_rotation[2],self.imu_torso_position[2]) + self.imu_head_to_field_transform[2] = self.imu_torso_to_field_transform[2].multiply(r.body_parts["torso"].transform.invert()) + self.imu_CoM_position[2][:] = self.imu_head_to_field_transform[2](r.rel_cart_CoM_position) + + # Next Position = x0 + v0*t + 0.5*a*t^2, Next velocity = v0 + a*t + self.imu_torso_next_position[2] = self.imu_torso_position[2] + self.imu_torso_velocity[2] * 0.02 + self.imu_torso_acceleration[2] * 0.0002 + self.imu_torso_next_velocity[2] = self.imu_torso_velocity[2] + self.imu_torso_acceleration[2] * 0.02 + self.imu_torso_next_velocity[2] *= Robot.IMU_DECAY #stability tradeoff + + def compute_local_IMU_rotation_only(self): + r = self.player.world.robot + g = r.gyro / 50 # convert degrees per second to degrees per step + self.imu_torso_to_field_rotation[1].multiply( Matrix_3x3.from_rotation_deg(g), in_place=True, reverse_order=True) + self.imu_torso_position[1][:] = r.loc_torso_position + self.imu_torso_to_field_transform[1] = Matrix_4x4.from_3x3_and_translation(self.imu_torso_to_field_rotation[1],self.imu_torso_position[1]) + self.imu_head_to_field_transform[1] = self.imu_torso_to_field_transform[1].multiply(r.body_parts["torso"].transform.invert()) + self.imu_CoM_position[1][:] = self.imu_head_to_field_transform[1](r.rel_cart_CoM_position) + + + def update_local_IMU(self, i): + r = self.player.world.robot + self.imu_torso_to_field_rotation[i].m[:] = r.imu_torso_to_field_rotation.m + self.imu_torso_to_field_transform[i].m[:] = r.imu_weak_torso_to_field_transform.m + self.imu_head_to_field_transform[i].m[:] = r.imu_weak_head_to_field_transform.m + self.imu_torso_position[i][:] = r.imu_weak_torso_position + self.imu_torso_velocity[i][:] = r.imu_weak_torso_velocity + self.imu_torso_acceleration[i][:] = r.imu_weak_torso_acceleration + self.imu_torso_next_position[i] = self.imu_torso_position[i] + self.imu_torso_velocity[i] * 0.02 + self.imu_torso_acceleration[i] * 0.0002 + self.imu_torso_next_velocity[i] = self.imu_torso_velocity[i] + self.imu_torso_acceleration[i] * 0.02 + self.imu_CoM_position[i][:] = r.imu_weak_CoM_position + + def execute(self): + + a = self.script.args + self.player = Agent(a.i, a.p, a.m, a.u, a.r, a.t) # Args: Server IP, Agent Port, Monitor Port, Uniform No., Robot Type, Team Name + + self.player.scom.unofficial_beam((-3,0,self.player.world.robot.beam_height),15) + + for _ in range(10): #beam to place + self.player.scom.commit_and_send() + self.player.scom.receive() + + self.player.world.draw.annotation((-3,1,1.1), "IMU + Localizer", self.colors[0], "note_IMU_1", True) + + for _ in range(150): + self.act() + self.update_local_IMU(0) + self.draw_player_reference_frame(0) + + self.player.world.draw.annotation((-3,1,0.9), "IMU for rotation", self.colors[1], "note_IMU_2", True) + self.update_local_IMU(1) + + for _ in range(200): + self.act() + self.update_local_IMU(0) + self.draw_player_reference_frame(0) + self.compute_local_IMU_rotation_only() + self.draw_player_reference_frame(1) + + self.player.world.draw.annotation((-3,1,0.7), "IMU for rotation & position", self.colors[2], "note_IMU_3", True) + self.update_local_IMU(2) + + for _ in range(200): + self.act() + self.update_local_IMU(0) + self.draw_player_reference_frame(0) + self.compute_local_IMU_rotation_only() + self.draw_player_reference_frame(1) + self.compute_local_IMU() + self.draw_player_reference_frame(2) + + print("\nPress ctrl+c to return.") + + # Still "IMU for rotation & position" but now start walking + self.update_local_IMU(2) + while True: + self.act2() + self.update_local_IMU(0) + self.draw_player_reference_frame(0) + self.compute_local_IMU_rotation_only() + self.draw_player_reference_frame(1) + self.compute_local_IMU() + self.draw_player_reference_frame(2) \ No newline at end of file diff --git a/scripts/utils/Inv_Kinematics.py b/scripts/utils/Inv_Kinematics.py new file mode 100644 index 0000000..235104a --- /dev/null +++ b/scripts/utils/Inv_Kinematics.py @@ -0,0 +1,146 @@ +from agent.Base_Agent import Base_Agent as Agent +from itertools import count +from math_ops.Inverse_Kinematics import Inverse_Kinematics +from scripts.commons.Script import Script +from world.commons.Draw import Draw +import numpy as np + + +class Inv_Kinematics(): + def __init__(self, script:Script) -> None: + self.args = script.args + self.last_action = (0,0,0) + self.gravity = True + + # Initial pose is a neutral pose where all angles are 0 + leg_y_dev, upper_leg_height, upper_leg_depth, lower_leg_len, _, _ = Inverse_Kinematics.NAO_SPECS_PER_ROBOT[self.args.r] + leg_height = upper_leg_height + lower_leg_len + self.feet_pose = [ [[upper_leg_depth,leg_y_dev,-leg_height],[0,0,0]], [[upper_leg_depth,-leg_y_dev,-leg_height], [0,0,0]] ] + + + + def _user_control(self): + + while True: + + inp = input("Command:") + if inp == "": return 2 + elif inp == ".": return 1 + elif inp == "h": self.print_help(); continue + elif inp == "g": + self.gravity = not self.gravity + print("Using gravity:",self.gravity) + if self.gravity: + return 6 # extra steps for beam to take effect + else: + return 1 + + #Check if user input is a value + try: + val = float(inp) + self.feet_pose[self.last_action[0]][self.last_action[1]][self.last_action[2]] = val + continue + except: + pass + + if inp[0] not in ['l','r'] or inp[1] not in ['x','y','z','X','Y','Z']: + print("Illegal command!") + continue + + side = 0 if inp[0]=='l' else 1 + pos_rot = 0 if inp[1].islower() else 1 + axis = {'x':0,'y':1,'z':2}[inp[1].lower()] + self.last_action = (side,pos_rot,axis) + + try: + val = float(inp[2:]) + self.feet_pose[side][pos_rot][axis] = val + except: + print("Illegal value conversion!") + + + + def _draw_labels(self, player:Agent): + r = player.world.robot + robot_pos = r.loc_head_position + for i, body_part in enumerate(['lankle','rankle']): + pos = r.get_body_part_abs_position(body_part) + label_rel_pos = np.array([-0.2,(0.5-i),0]) + label_rel_pos /= np.linalg.norm(label_rel_pos) / 1.0 #labels at 1.0m from body part + player.world.draw.line( pos,pos+label_rel_pos,2,Draw.Color.green_light,body_part,False) + p = self.feet_pose[i] + pose_text = f"x:{p[0][0]:.4f} y:{p[0][1]:.4f} z:{p[0][2]:.4f}", f"rol:{p[1][0]:.2f} (bias) pit:{p[1][1]:.2f} (bias) yaw:{p[1][2]:.2f} " + player.world.draw.annotation( pos+label_rel_pos+[0,0,0.2], pose_text[0], Draw.Color.cyan,body_part,False) + player.world.draw.annotation( pos+label_rel_pos+[0,0,0.1], pose_text[1], Draw.Color.cyan,body_part,False) + + # Draw forward kinematics (ankles positions + feet rotation) + p = player.inv_kinematics.get_body_part_pos_relative_to_hip(body_part) # ankle relative to center of both hip joints + foot_rel_torso = r.head_to_body_part_transform("torso", r.body_parts[['lfoot','rfoot'][i]].transform ) + w = foot_rel_torso.get_roll_deg(), foot_rel_torso.get_pitch_deg(), foot_rel_torso.get_yaw_deg() + pose_text = f"x:{p[0]:.4f} y:{p[1]:.4f} z:{p[2]:.4f}", f"rol:{w[0]:.4f} pit:{w[1]:.4f} yaw:{w[2]:.4f}" + + player.world.draw.annotation( pos+label_rel_pos+[0,0,-0.2], pose_text[0], Draw.Color.red,body_part,False) + player.world.draw.annotation( pos+label_rel_pos+[0,0,-0.3], pose_text[1], Draw.Color.red,body_part,False) + player.world.draw.annotation( pos+label_rel_pos+[0,0,-0.4], "(forward kinematics data)", Draw.Color.red,body_part,True) + + note = f"Torso roll: {r.imu_torso_roll:.2f} Torso pitch: {r.imu_torso_pitch:.2f}" + player.world.draw.annotation( robot_pos+[0,0,0.10],note,Draw.Color.red,"Torso") + + + def print_help(self): + print(""" +---------------- Inverse kinematics demonstration ---------------- +INPUT: ankle positions + feet rotations (relative coordinates) +OUTPUT: angular positions of both legs' joints +------------------------------------------------------------------ +Command: {action/option} + action: [side:{l/r} axis*:{x/y/z/X/Y/Z}] value + *for position use x/y/z, for rotation use X/Y/Z + option: {"",.,g,h} +Examples: + "lz-0.12" - move left ankle to -0.1m in the z-axis + "rX30.5" - rotate right foot to 30.5 deg in the x-axis (roll) + "20" - repeat last action but change value to 20 + "" - advance 2 simulation step + "." - advance 1 simulation step + "g" - toggle gravity + "h" - help, display this message + "ctrl+c" - quit demonstration +------------------------------------------------------------------""") + + def execute(self): + + self.state = 0 + a = self.args + + self.print_help() + player = Agent(a.i, a.p, a.m, a.u, a.r, a.t) # Args: Server IP, Agent Port, Monitor Port, Uniform No., Robot Type, Team Name + + player.scom.unofficial_beam((-3,0,0.42),0) + + next_control_step = 20 + + for i in count(): + + if self.gravity: + player.scom.unofficial_beam((-3,0,0.42),0) + + self._draw_labels(player) + + if i == next_control_step: + next_control_step += self._user_control() + + for i in range(2): #left and right legs + + indices, values, error_codes = player.inv_kinematics.leg(self.feet_pose[i][0], self.feet_pose[i][1], bool(i==0), False) + + if -1 in error_codes: + print("Position is out of reach!") + error_codes.remove(-1) + for j in error_codes: + print(f"Joint {j} is out of range!") + + player.world.robot.set_joints_target_position_direct(indices,values) + + player.scom.commit_and_send( player.world.robot.get_command() ) + player.scom.receive() \ No newline at end of file diff --git a/scripts/utils/Joints.py b/scripts/utils/Joints.py new file mode 100644 index 0000000..8ca013c --- /dev/null +++ b/scripts/utils/Joints.py @@ -0,0 +1,151 @@ +from agent.Base_Agent import Base_Agent as Agent +from scripts.commons.Script import Script +from world.commons.Draw import Draw +import numpy as np + +class Joints(): + + def __init__(self,script:Script) -> None: + self.script = script + self.agent_pos = (-3,0,0.45) + self.enable_pos = True + self.enable_gravity = False + self.enable_labels = True + self.enable_harmonize = True + self.active_joint = 0 + self.joints_value = None #position or speed + + + def _draw_joints(self,player:Agent): + zstep = 0.05 + label_z = [3*zstep,5*zstep,0,0,zstep,zstep,2*zstep,2*zstep,0,0,0,0,zstep,zstep,0,0,zstep,zstep,4*zstep,4*zstep,5*zstep,5*zstep,0,0] + for j, transf in enumerate(player.world.robot.joints_transform): + rp = transf.get_translation() + pos = player.world.robot.loc_head_to_field_transform(rp,False) + j_id = f"{j}" + j_name = f"{j}" + color = Draw.Color.cyan + if player.world.robot.joints_position[j] != 0: + j_name += f" ({int(player.world.robot.joints_position[j])})" + color = Draw.Color.red + label_rp = np.array([rp[0]-0.0001,rp[1]*0.5,0]) + label_rp /= np.linalg.norm(label_rp) / 0.5 #labels at 0.5m from body part + label_rp += (0,0,label_z[j]) + label = player.world.robot.loc_head_to_field_transform(rp+label_rp,False) + player.world.draw.line( pos,label,2,Draw.Color.green_light,j_id,False) + player.world.draw.annotation( label,j_name,color,j_id) + + + def print_help(self): + print(f""" +---------------------- Joints demonstration ---------------------- +Command: {{action/actions/option}} + action : [joint:{{int}}] value + actions: value0,value1,...,valueN + e.g. if N=10, you control all joints from j0 to j10 + option: {{h,s,g,l,w,r,"",.}} +Examples: + "6 90" - move joint 6 to 90deg or move joint 6 at 90deg/step + "4" - move last joint to 4deg or apply speed of 4deg/step + "1,9,-35"- move joints 0,1,2 to 1deg, 9deg, -35deg (or speed) + "h" - help, display this message + "s" - toggle position/speed control ({"Posi" if self.enable_pos else "Spee"}) + "g" - toggle gravity ({self.enable_gravity}) + "l" - toggle labels ({self.enable_labels}) + "w" - toggle harmonize* ({self.enable_harmonize}) + "r" - reset (position mode + reset joints) + "" - advance 2 simulation step + "." - advance 1 simulation step + "ctrl+c" - quit demonstration + + *all joints end moving at the same time when harmonize is True +------------------------------------------------------------------""") + + def _user_control_step(self,player:Agent): + + while True: + + inp = input("Command: ") + if inp == "s": + self.enable_pos = not self.enable_pos + print("Using", "position" if self.enable_pos else "velocity", "control.") + if self.enable_pos: + self.joints_value[:] = player.world.robot.joints_position + else: + self.joints_value.fill(0) + continue + elif inp == "g": + self.enable_gravity = not self.enable_gravity + print("Using gravity:",self.enable_gravity) + continue + elif inp == "l": + self.enable_labels = not self.enable_labels + print("Using labels:",self.enable_labels) + continue + elif inp == "w": + self.enable_harmonize = not self.enable_harmonize + print("Using harmonize:",self.enable_harmonize) + continue + elif inp == "r": + self.enable_pos = True + self.joints_value.fill(0) + print("Using position control. All joints are set to zero.") + continue + elif inp == "h": + self.print_help(); continue + + elif inp == "": return 1 + elif inp == ".": return 0 + + try: + if " " in inp: + self.active_joint, value = map(float, inp.split()) + self.joints_value[int(self.active_joint)] = value + elif "," in inp: + values = inp.split(",") + self.joints_value[0:len(values)] = values + else: + self.joints_value[self.active_joint] = float(inp) + except: + print("Illegal command!") + continue + + + + def execute(self): + + a = self.script.args + player = Agent(a.i, a.p, a.m, a.u, a.r, a.t) # Args: Server IP, Agent Port, Monitor Port, Uniform No., Robot Type, Team Name + + self.joints_no = player.world.robot.no_of_joints + self.joints_value = np.zeros(self.joints_no) # initialize + + player.scom.commit_beam(self.agent_pos[0:2],0) + + self.print_help() + + # initialize (+beam) + for _ in range(8): + player.scom.commit_and_send() + player.scom.receive() + self._draw_joints(player) + + skip_next = 0 # variable to advance more than 1 step + + while True: + if skip_next == 0: + skip_next = self._user_control_step(player) + else: + skip_next -= 1 + + if self.enable_labels: + self._draw_joints(player) + + if self.enable_pos: + player.world.robot.set_joints_target_position_direct(slice(self.joints_no), self.joints_value, harmonize=self.enable_harmonize) + else: + player.world.robot.joints_target_speed[:]=self.joints_value * 0.87266463 #deg/step to rad/s + + if not self.enable_gravity: player.scom.unofficial_beam(self.agent_pos,0) + player.scom.commit_and_send( player.world.robot.get_command() ) + player.scom.receive() \ No newline at end of file diff --git a/scripts/utils/Kick.py b/scripts/utils/Kick.py new file mode 100644 index 0000000..2cfe3db --- /dev/null +++ b/scripts/utils/Kick.py @@ -0,0 +1,53 @@ +from agent.Base_Agent import Base_Agent as Agent +from math_ops.Math_Ops import Math_Ops as M +from scripts.commons.Script import Script +import numpy as np + +''' +Objective: +---------- +Demonstrate kick +''' + +class Kick(): + def __init__(self, script:Script) -> None: + self.script = script + + def execute(self): + + a = self.script.args + player = Agent(a.i, a.p, a.m, a.u, a.r, a.t) # Args: Server IP, Agent Port, Monitor Port, Uniform No., Robot Type, Team Name + player.path_manager.draw_options(enable_obstacles=True, enable_path=True) # enable drawings of obstacles and path to ball + behavior = player.behavior + w = player.world + r = w.robot + + print("\nThe robot will kick towards the center of the field") + print("Try to manually relocate the ball") + print("Press ctrl+c to return\n") + + player.scom.unofficial_set_play_mode("PlayOn") + player.scom.unofficial_beam((-3,0,r.beam_height),0) + vec = (1,0) + + while True: + player.scom.unofficial_set_game_time(0) + b = w.ball_abs_pos[:2] + + if 0 < np.linalg.norm(w.get_ball_abs_vel(6)) < 0.02: # speed of zero is likely to indicate prolongued inability to see the ball + if np.linalg.norm(w.ball_rel_head_cart_pos[:2]) > 0.5: # update kick if ball is further than 0.5 m + if max(abs(b)) < 0.5: + vec = np.array([6,0]) + else: + vec = M.normalize_vec((0,0)-b) * 6 + + w.draw.point(b+vec, 8, w.draw.Color.pink, "target") + + behavior.execute("Basic_Kick", M.vector_angle(vec)) + + player.scom.commit_and_send( r.get_command() ) + player.scom.receive() + + if behavior.is_ready("Get_Up"): + player.scom.unofficial_beam((*r.loc_head_position[0:2],r.beam_height),0) + behavior.execute_to_completion("Zero_Bent_Knees") \ No newline at end of file diff --git a/scripts/utils/Localization.py b/scripts/utils/Localization.py new file mode 100644 index 0000000..bb91937 --- /dev/null +++ b/scripts/utils/Localization.py @@ -0,0 +1,103 @@ +from agent.Agent import Agent as Agent +from cpp.localization import localization +from math_ops.Math_Ops import Math_Ops as M +from scripts.commons.Script import Script +from world.commons.Draw import Draw +from world.commons.Other_Robot import Other_Robot + + +class Localization(): + + def __init__(self,script:Script) -> None: + self.script = script + + + def execute(self): + + a = self.script.args + d = self.draw = Draw(True, 0, a.i, 32769) # using independent draw object so that the internal agent drawings can be disabled + + # Args: Server IP, Agent Port, Monitor Port, Uniform No., Team name, Enable Log, Enable Draw + self.script.batch_create(Agent, ((a.i,a.p,a.m,1,a.t,False,False),)) # one teammate (dummy goalkeeper without communication) + self.script.batch_create(Agent, ((a.i,a.p,a.m,5,"Opponent",False,False),)) # one opponent + self.script.batch_create(Agent, ((a.i,a.p,a.m,9,a.t,False,False),)) # one main agent (the one who draws its world) + + # Beam dummy goalkeeper + self.script.batch_unofficial_beam( ((-14,0,0.5,0),), slice(0,1)) + + p : Agent = self.script.players[-1] # p identifies the main agent + p.scom.unofficial_set_play_mode("PlayOn") + + # Execute + while True: + self.script.batch_commit_and_send(slice(0,1)) # dummy agent does not think + self.script.batch_execute_agent(slice(1,None)) # execute normal agents + self.script.batch_receive(slice(0,1), False) # receive & don't update dummy's world state (to save cpu resources) + self.script.batch_receive(slice(1,None)) # receive & update world state + + if p.world.vision_is_up_to_date: + if p.world.robot.loc_is_up_to_date: # localization will draw the world of the last agent to be executed + localization.print_python_data() # print data received by the localization module + localization.draw_visible_elements(not p.world.team_side_is_left) # draw visible elements + localization.print_report() # print report with stats + print("\nPress ctrl+c to return.") + d.circle( p.world.ball_abs_pos, 0.1,6,Draw.Color.purple_magenta,"world", False) + else: + d.annotation( p.world.robot.cheat_abs_pos, "Not enough visual data!", Draw.Color.red,"world", False) + + for o in p.world.teammates: + if o.state_last_update != 0 and not o.is_self: # skip if other robot was not yet seen + self._draw_other_robot(p, o, Draw.Color.white) + + for o in p.world.opponents: + if o.state_last_update != 0: # skip if other robot was not yet seen + self._draw_other_robot(p, o, Draw.Color.red) + + d.flush("world") + + + + def _draw_other_robot(self, p:Agent, o:Other_Robot, team_color): + #p - player that sees + #o - other robot (player that is seen) + + d = self.draw + white = Draw.Color.white + green = Draw.Color.green_light + gray = Draw.Color.gray_20 + + time_diff = p.world.time_local_ms - o.state_last_update + if time_diff > 0: + white = Draw.Color.gray_40 + green = Draw.Color.get(107, 139, 107) + gray = Draw.Color.gray_50 + + #orientation + if len(o.state_abs_pos)==3: + line_tip = o.state_abs_pos + (0.5*M.deg_cos(o.state_orientation),0.5*M.deg_sin(o.state_orientation),0) + d.line( o.state_abs_pos, line_tip, 3, white, "world", False) + else: + temp_pos = M.to_3d(o.state_abs_pos, 0.3) + line_tip = temp_pos + (0.5*M.deg_cos(o.state_orientation),0.5*M.deg_sin(o.state_orientation),0) + d.line( temp_pos, line_tip, 3, Draw.Color.yellow, "world", False) + + #body parts + for pos in o.state_body_parts_abs_pos.values(): + d.sphere( pos, 0.07, green,"world", False) + + #player ground area + d.circle( o.state_ground_area[0], o.state_ground_area[1], 6, team_color,"world", False) + + #distance + midpoint = (o.state_abs_pos[0:2] + p.world.robot.loc_head_position[0:2])/2 + d.line( o.state_abs_pos[0:2], p.world.robot.loc_head_position[0:2], 1, gray, "world", False) + d.annotation( midpoint, f'{o.state_horizontal_dist:.2f}m', white, "world", False) + + #velocity + arrow_tip = o.state_abs_pos[0:2] + o.state_filtered_velocity[0:2] + d.arrow( o.state_abs_pos[0:2], arrow_tip, 0.2, 4, green, "world", False) + + #state + state_color = white if not o.state_fallen else Draw.Color.yellow + d.annotation( (o.state_abs_pos[0],o.state_abs_pos[1],1), + f"({o.unum}) {'Fallen' if o.state_fallen else 'Normal'}", state_color, "world", False) \ No newline at end of file diff --git a/scripts/utils/Pathfinding.py b/scripts/utils/Pathfinding.py new file mode 100644 index 0000000..c371b19 --- /dev/null +++ b/scripts/utils/Pathfinding.py @@ -0,0 +1,203 @@ +from agent.Base_Agent import Base_Agent as Agent +from cpp.a_star import a_star +from scripts.commons.Script import Script +import numpy as np +import time + +''' +:::::::::::::::::::::::::::::::::::::::::: +::::::::a_star.compute(param_vec)::::::::: +:::::::::::::::::::::::::::::::::::::::::: + +param_vec (numpy array, float32) +param_vec[0] - start x +param_vec[1] - start y +param_vec[2] - allow path to go out of bounds? (useful when player does not have the ball) +param_vec[3] - go to opposite goal? (path goes to the most efficient part of the goal) +param_vec[4] - target x (only used if param_vec[3]==0) +param_vec[5] - target y (only used if param_vec[3]==0) +param_vec[6] - timeout in us (maximum execution time) +-------------- [optional] ---------------- +param_vec[ 7-11] - obstacle 1: x, y, hard radius (max:5m), soft radius (max:5m), repulsive force for soft radius (min:0) +param_vec[12-16] - obstacle 2: x, y, hard radius (max:5m), soft radius (max:5m), repulsive force for soft radius (min:0) +... - obstacle n: x, y, hard radius (max:5m), soft radius (max:5m), repulsive force for soft radius (min:0) +---------------- return ------------------ +path_ret : numpy array (float32) + path_ret[:-2] + contains path from start to target (up to a maximum of 1024 positions) + each position is composed of x,y coordinates (so, up to 2048 coordinates) + the return vector is flat (1 dimension) (e.g. [x1,y1,x2,y2,x3,y3,...]) + reasons why path may not end in target: + - path is longer than 1024 positions (which is at least 102 meters!) + - reaching target is impossible or timeout (in which case, the path ends in the closest position to target found) + path_ret[-2] + number indicating the path status + 0 - success + 1 - timeout before the target was reached (may be impossible) + 2 - impossible to reach target (all options were tested) + 3 - no obstacles between start and target (path_ret[:-2] contains only 2 points: the start and target) + path_ret[-1] + A* path cost +:::::::::::::::::::::::::::::::::::::::::: +::::::::::::::::::Notes::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::: + +Map of field: + - The algorithm has a 32m by 22m map with a precision of 10cm (same dimension as field +1 meter border) + - The map contains information about field lines, goal posts and goal net + - The path may go outside the field (out of bounds) if the user allows it, + but it may never go through goal posts or the goal net (these are considered static inaccessible obstacles) + - The user must only specify dynamic obstacles through the arguments + +Repulsive force: + - The repulsive force is implemented as an extra cost for the A* algorithm + - The cost for walking 10cm is 1, and the cost for walking diagonally is sqrt(2) + - The extra cost of stepping on a position with a repulsive force f=1 is 1 + - For any given position on the field, the repulsive force of >=2 objects is combined with the max function, max(f1,f2), NOT f1+f2! + - If path starts on inaccessible position, it can go to a neighbor inaccessible position but there is a cost of 100 (to avoid inaccessible paths) + Example: + Map 1 Map 2 Map 3 + ..x.. ..o.. ..o.. + ..1.. ..o.. .o1.. + ..o.. ..o.. ..o.. + Consider 'Map 1' where 'x' is the target, 'o' is the player, and '1' is a repulsive force of 1 + In 'Map 2', the player chooses to go forward, the total cost of this path is: 1+(extra=1)+1 = 3 + In 'Map 3', the player avoids the repulsive force, the total cost of this path is: sqrt(2)+sqrt(2) = 2.83 (optimal solution) + Map 1 Map 2 Map 3 Map 4 + ...x... ..oo... ...o... ...o... + ..123.. .o123.. ..o23.. ..1o3.. + ...o... ..oo... ...o... ...o... + Consider 'Map 1' with 3 positions with 3 distinct repulsive forces, going from 1 to 3. + In 'Map 2', the player avoids all repulsive forces, total cost: 1+sqrt(2)+sqrt(2)+1 = 4.83 + In 'Map 3', the player goes through the smallest repulsive force, total cost: sqrt(2)+(extra=1)+sqrt(2) = 3.83 (optimal solution) + In 'Map 4', the player chooses to go forward, total cost: 1+(extra=2)+1 = 4.00 + +Obstacles: + hard radius: inaccessible obstacle radius (infinite repulsive force) + soft radius: accessible obstacle radius with user-defined repulsive force (fades with distance) (disabled if <= hard radius) + Example: + obstacle(0,0,1,3,5) -> obstacle at pos(0,0) with hard radius of 1m, soft radius of 3m with repulsive force 5 + - the path cannot be at <=1m from this obstacle, unless the path were to start inside that radius + - the soft radius force is maximum at the center (5) and fades with distance until (0) at 3m from the obstacle + - so to sum up, at a distance of [0,1]m the force is infinite, [1,3]m the force goes from 3.333 to 0 + obstacle(-2.1,3,0,0,0) -> obstacle at pos(-2.1,3) with hard radius of 0m, soft radius of 0m with repulsive force 0 + - the path cannot go through (-2.1,3) + obstacle(-2.16,3,0,0,8) -> obstacle at pos(-2.2,3) with hard radius of 0m, soft radius of 0m with repulsive force 8 + - the path cannot go through (-2.2,3), the map has a precision of 10cm, so the obstacle is placed at the nearest valid position + - the repulsive force is ignored because (soft radius <= hard radius) +''' + + + +class Pathfinding(): + def __init__(self, script:Script) -> None: + self.script = script + a_star.compute(np.zeros(6, np.float32)) # Initialize (not needed, but the first run takes a bit more time) + + def draw_grid(self): + d = self.player.world.draw + MAX_RAW_COST = 0.6 # dribble cushion + + for x in np.arange(-16,16.01,0.1): + for y in np.arange(-11,11.01,0.1): + s_in, cost_in = a_star.compute(np.array([x, y, 0, 0, x, y, 5000], np.float32))[-2:] # do not allow out of bounds + s_out, cost_out = a_star.compute(np.array([x, y, 1, 0, x, y, 5000], np.float32))[-2:] # allow out of bounds + #print(path_cost_in, path_cost_out) + if s_out != 3: + d.point((x,y), 5, d.Color.red, "grid", False) + elif s_in != 3: + d.point((x,y), 4, d.Color.blue_pale, "grid", False) + elif 0 < cost_in < MAX_RAW_COST + 1e-6: + d.point((x,y), 4, d.Color.get(255,(1-cost_in/MAX_RAW_COST)*255,0), "grid", False) + elif cost_in > MAX_RAW_COST: + d.point((x,y), 4, d.Color.black, "grid", False) + #else: + # d.point((x,y), 4, d.Color.white, "grid", False) + d.flush("grid") + + def sync(self): + r = self.player.world.robot + self.player.behavior.head.execute() + self.player.scom.commit_and_send( r.get_command() ) + self.player.scom.receive() + + def draw_path_and_obstacles(self, obst, path_ret_pb, path_ret_bp): + w = self.player.world + + # draw obstacles + for i in range(0,len(obst[0]),5): + w.draw.circle(obst[0][i:i+2], obst[0][i+2], 2, w.draw.Color.red, "obstacles", False) + w.draw.circle(obst[0][i:i+2], obst[0][i+3], 2, w.draw.Color.orange, "obstacles", False) + + # draw path + path_pb = path_ret_pb[:-2] # create view without status + path_status_pb = path_ret_pb[-2] # extract status + path_cost_pb = path_ret_pb[-1] # extract A* cost + path_bp = path_ret_bp[:-2] # create view without status + path_status_bp = path_ret_bp[-2] # extract status + path_cost_bp = path_ret_bp[-1] # extract A* cost + + c_pb = {0: w.draw.Color.green_lime, 1: w.draw.Color.yellow, 2: w.draw.Color.red, 3: w.draw.Color.blue_light}[path_status_pb] + c_bp = {0: w.draw.Color.green_pale, 1: w.draw.Color.yellow_light, 2: w.draw.Color.red_salmon, 3: w.draw.Color.blue_pale}[path_status_bp] + + for i in range(2,len(path_pb)-2,2): + w.draw.line(path_pb[i-2:i],path_pb[i:i+2], 5, c_pb, "path_player_ball", False) + + if len(path_pb)>=4: + w.draw.arrow(path_pb[-4:-2],path_pb[-2:],0.4, 5, c_pb, "path_player_ball", False) + + for i in range(2,len(path_bp)-2,2): + w.draw.line(path_bp[i-2:i],path_bp[i:i+2], 5, c_bp, "path_ball_player", False) + + if len(path_bp)>=4: + w.draw.arrow(path_bp[-4:-2],path_bp[-2:],0.4, 5, c_bp, "path_ball_player", False) + + w.draw.flush("obstacles") + w.draw.flush("path_player_ball") + w.draw.flush("path_ball_player") + + def move_obstacles(self, obst): + + for i in range(len(obst[0])//5): + obst[0][i*5] +=obst[1][i,0] + obst[0][i*5+1]+=obst[1][i,1] + if not -16ball) + param_vec_bp = np.array([*ball, 0, go_to_goal, *rpos, timeout, *obst[0]], np.float32) # don't allow (ball->player) + t1 = time.time() + path_ret_pb = a_star.compute(param_vec_pb) + t2 = time.time() + path_ret_bp = a_star.compute(param_vec_bp) + t3 = time.time() + + print(end=f"\rplayer->ball {int((t2-t1)*1000000):5}us (len:{len(path_ret_pb[:-2])//2:4}) ball->player {int((t3-t2)*1000000):5}us (len:{len(path_ret_bp[:-2])//2:4}) ") + + self.draw_path_and_obstacles( obst, path_ret_pb, path_ret_bp ) + self.sync() diff --git a/scripts/utils/Radio_Localization.py b/scripts/utils/Radio_Localization.py new file mode 100644 index 0000000..ccdca6f --- /dev/null +++ b/scripts/utils/Radio_Localization.py @@ -0,0 +1,97 @@ +from agent.Agent import Agent +from itertools import count +from scripts.commons.Script import Script +from typing import List +from world.commons.Draw import Draw + +class Radio_Localization(): + def __init__(self,script:Script) -> None: + self.script = script + + def draw_objects(self, p:Agent, pos, is_down, was_seen, last_update, is_self=False): + w = p.world + me = w.robot.loc_head_position + + # get draw object from same player to always overwrite previous drawing + # could also use team channel but with this approach we could draw for both teams + d:Draw = self.script.players[0].world.draw + + # VISUALSTEP_MS is the time it takes to get a visual update + is_current = last_update > w.time_local_ms - w.VISUALSTEP_MS + + # 0.12s is the time it takes to do a full broadcast with all positions if every group is completely visible + # here we use >= instead of > because the radio message comes with a delay of 20ms + is_recent = last_update >= w.time_local_ms - 120 + + if is_current and was_seen: + c = d.Color.green_light # I've seen this object in the current or previous time step + elif is_recent and was_seen: + c = d.Color.green # I've seen this object in the last 0.12s + elif is_current: + c = d.Color.yellow # I've heard about this object in the current or previous time step (and it was not seen in the same period) + elif is_recent: + c = d.Color.yellow_light # I've heard about this object in the last 0.12s (the last available info was not obtained from vision) + else: + c = d.Color.red # I haven't seen or heard about this object in the last 0.12s + + if is_self: + if w.robot.radio_fallen_state: + d.annotation(me, "Fallen (radio)", d.Color.yellow, "objects", False) # I heard I've fallen (but I missed the last 2 visual steps) + elif w.robot.loc_head_z < 0.3: + d.annotation(me, "Fallen (internal)", d.Color.white, "objects", False) # I have detected I've fallen + d.sphere(me, 0.06, c, "objects", False) + else: + if is_down: + d.annotation((me[:2]+pos[:2])/2,"Fallen",d.Color.white,"objects",False) + d.arrow(me, pos, 0.1, 3, c, "objects", False) + + + def draw(self,p:Agent): + w = p.world + others = w.teammates + w.opponents + + #----------------------------------------------------------- draw other players + + for o in others: + if o.is_self or o.state_last_update==0: # do not draw self or never before seen players + continue + + pos = o.state_abs_pos + is_down = o.state_fallen + # 3D head position means head is visible, 2D means some body parts are visible but not the head, or the head position comes from radio + is_3D = pos is not None and len(pos)==3 + + self.draw_objects(p, pos, is_down, is_3D, o.state_last_update) + + #----------------------------------------------------------- draw self + + is_pos_from_vision = w.robot.loc_head_position_last_update == w.robot.loc_last_update + self.draw_objects(p, None, None, is_pos_from_vision, w.robot.loc_head_position_last_update, True) + + #----------------------------------------------------------- draw ball and flush drawings + + self.draw_objects(p, w.ball_abs_pos, False, w.is_ball_abs_pos_from_vision, w.ball_abs_pos_last_update) + self.script.players[0].world.draw.flush("objects") + + + def execute(self): + a = self.script.args + + # Args: Server IP, Agent Port, Monitor Port, Uniform No., Robot Type, Team Name, Enable Log, Enable Draw + self.script.batch_create(Agent, ((a.i,a.p,a.m,u,a.t, False,u==1) for u in range(1,12))) + self.script.batch_create(Agent, ((a.i,a.p,a.m,u,"Opponent",False,False) for u in range(1,12))) + players : List[Agent] = self.script.players + + # Beam opponents + beam_pos = [(-(i//2)-3,(i%2*2-1)*(i//2+1),0) for i in range(11)] + self.script.batch_commit_beam( beam_pos, slice(11,None) ) + print("\nPress ctrl+c to return.") + + # Execute + for j in count(): + self.script.batch_execute_agent( slice(11) ) # run our agents (think and send) + self.script.batch_commit_and_send( slice(11,None) ) # run their agents (don't think, just send) + + self.draw(players[j//15%11]) # draw knowledge, iterate through our team, 15 time steps per player + self.script.batch_receive(slice(11)) # receive & update our team's world state + self.script.batch_receive(slice(11,None), False) # receive & don't update opponent's world state (to save cpu resources) diff --git a/scripts/utils/Server.py b/scripts/utils/Server.py new file mode 100644 index 0000000..47dc714 --- /dev/null +++ b/scripts/utils/Server.py @@ -0,0 +1,148 @@ +import os + +class Server(): + + def __init__(self,script) -> None: + + if os.path.isdir("/usr/local/share/rcssserver3d/"): + self.source = "/usr/local/share/rcssserver3d/" + elif os.path.isdir("/usr/share/rcssserver3d/"): + self.source = "/usr/share/rcssserver3d/" + else: + raise FileNotFoundError("The server configuration files were not found!") + + # To add options: insert into options & explations with same index, read respective value from file or from other values, add edit entry + + self.options = ["Official Config", "Penalty Shootout", "Soccer Rules", "Sync Mode", "Real Time", "Cheats", "Full Vision", "Add Noise", "25Hz Monitor"] + self.descriptions = ["Configuration used in official matches", "Server's Penalty Shootout mode", "Play modes, automatic referee, etc.", + "Synchronous communication between agents and server", "Real Time (or maximum server speed)", + "Agent position & orientation, ball position", "See 360 deg instead of 120 deg (vertically & horizontally)", + "Noise added to the position of visible objects", "25Hz Monitor (or 50Hz but RoboViz will show 2x the actual speed)"] + + spark_f = os.path.expanduser("~/.simspark/spark.rb") + naoneckhead_f = self.source+"rsg/agent/nao/naoneckhead.rsg" + + self.files = {"Penalty Shootout" : self.source + "naosoccersim.rb", + "Soccer Rules" : self.source + "naosoccersim.rb", + "Sync Mode" : spark_f, + "Real Time" : self.source+"rcssserver3d.rb", + "Cheats" : naoneckhead_f, + "Full Vision" : naoneckhead_f, + "Add Noise" : naoneckhead_f, + "25Hz Monitor" : spark_f} + + + def label(self, setting_name, t_on, t_off): + with open(self.files[setting_name], "r") as sources: + content = sources.read() + + if t_on in content: + self.values[setting_name] = "On" + elif t_off in content: + self.values[setting_name] = "Off" + else: + self.values[setting_name] = "Error" + + + def read_config(self): + v = self.values = dict() + + print("Reading server configuration files...") + + self.label("Penalty Shootout", "addSoccerVar('PenaltyShootout', true)", "addSoccerVar('PenaltyShootout', false)") + self.label("Soccer Rules", " gameControlServer.initControlAspect('SoccerRuleAspect')", "#gameControlServer.initControlAspect('SoccerRuleAspect')") + self.label("Real Time", "enableRealTimeMode = true", "enableRealTimeMode = false") + self.label("Cheats", "setSenseMyPos true", "setSenseMyPos false") + self.label("Full Vision", "setViewCones 360 360", "setViewCones 120 120") + self.label("Add Noise", "addNoise true", "addNoise false") + self.label("Sync Mode", "agentSyncMode = true", "agentSyncMode = false") + self.label("25Hz Monitor", "monitorStep = 0.04", "monitorStep = 0.02") + + is_official_config = (v["Penalty Shootout"] == "Off" and v["Soccer Rules"] == "On" and v["Real Time"] == "On" and v["Cheats"] == "Off" and v["Full Vision"] == "Off" and + v["Add Noise"] == "On" and v["Sync Mode"] == "Off" and v["25Hz Monitor"] == "On") + print(v["Penalty Shootout"], is_official_config) + v["Official Config"] = "On" if is_official_config else "Off" + + def change_config(self, setting_name, t_on, t_off, current_value=None, file=None): + if current_value is None: + current_value = self.values[setting_name] + + if file is None: + file = self.files[setting_name] + + with open(file, "r") as sources: + t = sources.read() + if current_value == "On": + t = t.replace(t_on, t_off, 1) + print(f"Replacing '{t_on}' with '{t_off}' in '{file}'") + elif current_value == "Off": + t = t.replace(t_off, t_on, 1) + print(f"Replacing '{t_off}' with '{t_on}' in '{file}'") + else: + print(setting_name, "was not changed because the value is unknown!") + with open(file, "w") as sources: + sources.write(t) + + def execute(self): + + while True: + self.read_config() + + # Convert convenient values dict to list + values_list = [self.values[o] for o in self.options] + + print() + UI.print_table( [self.options, values_list, self.descriptions], ["Setting", "Value", "Description"], numbering=[True, False, False]) + choice = UI.read_int('Choose setting (ctrl+c to return): ',0,len(self.options)) + opt = self.options[choice] + + prefix = ['sudo', 'python3', 'scripts/utils/Server.py', opt] + + if opt in self.files: + suffix = [self.values[opt], self.files[opt]] + + if opt == "Penalty Shootout": + subprocess.call([*prefix, "addSoccerVar('PenaltyShootout', true)", "addSoccerVar('PenaltyShootout', false)", *suffix]) + elif opt == "Soccer Rules": + subprocess.call([*prefix, "gameControlServer.initControlAspect('SoccerRuleAspect')", "#gameControlServer.initControlAspect('SoccerRuleAspect')", *suffix]) + elif opt == "Sync Mode": + self.change_config(opt, "agentSyncMode = true", "agentSyncMode = false") # doesn't need sudo privileges + elif opt == "Real Time": + subprocess.call([*prefix, "enableRealTimeMode = true", "enableRealTimeMode = false", *suffix]) + elif opt == "Cheats": + subprocess.call([*prefix, "setSenseMyPos true", "setSenseMyPos false", *suffix, + opt, "setSenseMyOrien true", "setSenseMyOrien false", *suffix, + opt, "setSenseBallPos true", "setSenseBallPos false", *suffix]) + elif opt == "Full Vision": + subprocess.call([*prefix, "setViewCones 360 360", "setViewCones 120 120", *suffix]) + elif opt == "Add Noise": + subprocess.call([*prefix, "addNoise true", "addNoise false", *suffix]) + elif opt == "25Hz Monitor": + self.change_config(opt, "monitorStep = 0.04", "monitorStep = 0.02") # doesn't need sudo privileges + elif opt == "Official Config": + if self.values[opt] == "On": + print("The official configuration is already On!") + else: # here, the first option is the official value + subprocess.call([*prefix[:3], + "Penalty Shootout", "addSoccerVar('PenaltyShootout', false)", "addSoccerVar('PenaltyShootout', true)", "Off", self.files["Penalty Shootout"], + "Soccer Rules", "gameControlServer.initControlAspect('SoccerRuleAspect')", "#gameControlServer.initControlAspect('SoccerRuleAspect')", "Off", self.files["Soccer Rules"], + "Sync Mode", "agentSyncMode = false", "agentSyncMode = true", "Off", self.files["Sync Mode"], + "Real Time", "enableRealTimeMode = true", "enableRealTimeMode = false", "Off", self.files["Real Time"], + "Cheats", "setSenseMyPos false", "setSenseMyPos true", "Off", self.files["Cheats"], + "Cheats", "setSenseMyOrien false", "setSenseMyOrien true", "Off", self.files["Cheats"], + "Cheats", "setSenseBallPos false", "setSenseBallPos true", "Off", self.files["Cheats"], + "Full Vision", "setViewCones 120 120", "setViewCones 360 360", "Off", self.files["Full Vision"], + "Add Noise", "addNoise true", "addNoise false", "Off", self.files["Add Noise"], + "25Hz Monitor", "monitorStep = 0.04", "monitorStep = 0.02", "Off", self.files["25Hz Monitor"]]) + + +# process with sudo privileges to change the configuration files +if __name__ == "__main__": + import sys + s = Server(None) + + for i in range(1,len(sys.argv),5): + s.change_config( *sys.argv[i:i+5] ) +else: + import subprocess + from scripts.commons.UI import UI diff --git a/scripts/utils/Team_Communication.py b/scripts/utils/Team_Communication.py new file mode 100644 index 0000000..064a42c --- /dev/null +++ b/scripts/utils/Team_Communication.py @@ -0,0 +1,73 @@ +from agent.Base_Agent import Base_Agent as Agent +from itertools import count +from scripts.commons.Script import Script + +''' +How does communication work? + The say command allows a player to broadcast a message to everyone on the field + Message range: 50m (the field is 36m diagonally, so ignore this limitation) + The hear perceptor indicates 3 things: + - the message + - the origin team + - the origin absolute angle (set to "self" if the message was sent by oneself) + + Messages are heard in the next step. + Messages are only sent every 2 steps (0.04s). + Messages sent in muted steps are only heard by oneself. + In one time step, a player can only hear one other player besides itself. + If two other players say something, only the first message is heard. + This ability exists independetly for messages from both teams. + In theory, a player can hear its own message + the 1st teammate to speak + the 1st opponent to speak + In practice, the opponent doesn't matter because our team's parser ignores messages from other teams + + Message characteristics: + Maximum 20 characters, ascii between 0x20, 0x7E except ' ', '(', ')' + Accepted: letters+numbers+symbols: !"#$%&'*+,-./:;<=>?@[\]^_`{|}~ + However, due to a server bug, sending ' or " ends the message sooner + +''' + +class Team_Communication(): + + def __init__(self,script:Script) -> None: + self.script = script + + def player1_hear(self, msg:bytes, direction, timestamp:float) -> None: + print(f"Player 1 heard: {msg.decode():20} from:{direction:7} timestamp:{timestamp}") + + def player2_hear(self, msg:bytes, direction, timestamp:float) -> None: + print(f"Player 2 heard: {msg.decode():20} from:{direction:7} timestamp:{timestamp}") + + def player3_hear(self, msg:bytes, direction, timestamp:float) -> None: + print(f"Player 3 heard: {msg.decode():20} from:{direction:7} timestamp:{timestamp}") + + + def execute(self): + + a = self.script.args + + hear_callbacks = (self.player1_hear, self.player2_hear, self.player3_hear) + + # Args: Server IP, Agent Port, Monitor Port, Uniform No., Robot Type, Team Name, Enable Log, Enable Draw, Play Mode Correction, Wait for Server, Hear Callback + self.script.batch_create(Agent, ((a.i,a.p,a.m,i+1,0,a.t,True,True,False,True,clbk) for i,clbk in enumerate(hear_callbacks))) + p1:Agent = self.script.players[0] + p2:Agent = self.script.players[1] + p3:Agent = self.script.players[2] + + # Beam players + self.script.batch_commit_beam( [(-2,i,45) for i in range(3)] ) + + for i in count(): + msg1 = b"I_am_p1!_no:"+str(i).encode() + msg2 = b"I_am_p2!_no:"+str(i).encode() + msg3 = b"I_am_p3!_no:"+str(i).encode() + p1.scom.commit_announcement(msg1) # commit message + p2.scom.commit_announcement(msg2) # commit message + p3.scom.commit_announcement(msg3) # commit message + self.script.batch_commit_and_send() # send message + print(f"Player 1 sent: {msg1.decode()} HEX: {' '.join([f'{m:02X}' for m in msg1])}") + print(f"Player 2 sent: {msg2.decode()} HEX: {' '.join([f'{m:02X}' for m in msg2])}") + print(f"Player 3 sent: {msg3.decode()} HEX: {' '.join([f'{m:02X}' for m in msg3])}") + self.script.batch_receive() + input("Press enter to continue or ctrl+c to return.") + diff --git a/scripts/utils/__pycache__/Server.cpython-313.pyc b/scripts/utils/__pycache__/Server.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5ecb2a8ccb1afdc60a6b54f4f40bdd9c6a1a6bc4 GIT binary patch literal 9666 zcmbU{TTC2Rmba>(^n-31umNLSylEh`AHl|e9TRM@O$?ZFV~@dZ7u`kEq^ZJH)qZq# zX7e?|Gl^^`ij4Omll>XzYdrI_*^ga$ceGMQT4|~SV|r_>5v#SdiuQ-t*;vcRYR|n@ z)iea`B!&9cx#ymH>fC!zomcU~>vbWxynp9Pv@!_&C+?V+!vJ1r0DOX2#8LxDLS?81 zv2+DuE$y^UAyMNrYwf&%5O)UYbQZ}nP5~X&P8l@TaU1k)wc<0?rO4i

JW0nJx-AoxFi?c9Ru#u9?65T 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 literal 0 HcmV?d00001 diff --git a/start.sh b/start.sh new file mode 100755 index 0000000..48ba4b3 --- /dev/null +++ b/start.sh @@ -0,0 +1,9 @@ +#!/bin/bash +export OMP_NUM_THREADS=1 + +host=${1:-localhost} +port=${2:-3100} + +for i in {1..11}; do + python3 ./Run_Player.py -i $host -p $port -u $i -t FCPortugal -P 0 -D 0 & +done \ No newline at end of file diff --git a/start_debug.sh b/start_debug.sh new file mode 100755 index 0000000..e98c7bc --- /dev/null +++ b/start_debug.sh @@ -0,0 +1,9 @@ +#!/bin/bash +export OMP_NUM_THREADS=1 + +host=${1:-localhost} +port=${2:-3100} + +for i in {1..11}; do + python3 ./Run_Player.py -i $host -p $port -u $i -t FCP-debug -P 0 -D 1 & +done \ No newline at end of file diff --git a/start_fat_proxy.sh b/start_fat_proxy.sh new file mode 100755 index 0000000..cd86dd3 --- /dev/null +++ b/start_fat_proxy.sh @@ -0,0 +1,9 @@ +#!/bin/bash +export OMP_NUM_THREADS=1 + +host=${1:-localhost} +port=${2:-3100} + +for i in {1..11}; do + python3 ./Run_Player.py -i $host -p $port -u $i -t FCPortugal -F 1 -D 0 & +done \ No newline at end of file diff --git a/start_fat_proxy_debug.sh b/start_fat_proxy_debug.sh new file mode 100755 index 0000000..c156595 --- /dev/null +++ b/start_fat_proxy_debug.sh @@ -0,0 +1,9 @@ +#!/bin/bash +export OMP_NUM_THREADS=1 + +host=${1:-localhost} +port=${2:-3100} + +for i in {1..11}; do + python3 ./Run_Player.py -i $host -p $port -u $i -t FCP-debug -F 1 -D 1 & +done \ No newline at end of file diff --git a/start_penalty.sh b/start_penalty.sh new file mode 100755 index 0000000..f430951 --- /dev/null +++ b/start_penalty.sh @@ -0,0 +1,8 @@ +#!/bin/bash +export OMP_NUM_THREADS=1 + +host=${1:-localhost} +port=${2:-3100} + +python3 ./Run_Player.py -i $host -p $port -u 1 -t FCPortugal -P 1 -D 0 & +python3 ./Run_Player.py -i $host -p $port -u 11 -t FCPortugal -P 1 -D 0 & \ No newline at end of file diff --git a/start_penalty_debug.sh b/start_penalty_debug.sh new file mode 100755 index 0000000..002353e --- /dev/null +++ b/start_penalty_debug.sh @@ -0,0 +1,8 @@ +#!/bin/bash +export OMP_NUM_THREADS=1 + +host=${1:-localhost} +port=${2:-3100} + +python3 ./Run_Player.py -i $host -p $port -u 1 -t FCP-debug -P 1 -D 1 & +python3 ./Run_Player.py -i $host -p $port -u 11 -t FCP-debug -P 1 -D 1 & \ No newline at end of file diff --git a/world/Robot.py b/world/Robot.py new file mode 100644 index 0000000..bdeb901 --- /dev/null +++ b/world/Robot.py @@ -0,0 +1,535 @@ +from collections import deque +from math import atan, pi, sqrt, tan +from math_ops.Math_Ops import Math_Ops as M +from math_ops.Matrix_3x3 import Matrix_3x3 +from math_ops.Matrix_4x4 import Matrix_4x4 +from world.commons.Body_Part import Body_Part +from world.commons.Joint_Info import Joint_Info +import numpy as np +import xml.etree.ElementTree as xmlp + +class Robot(): + STEPTIME = 0.02 # Fixed step time + VISUALSTEP = 0.04 # Fixed visual step time + SQ_STEPTIME = STEPTIME * STEPTIME + GRAVITY = np.array([0,0,-9.81]) + IMU_DECAY = 0.996 #IMU's velocity decay + + #------------------ constants to force symmetry in joints/effectors + + MAP_PERCEPTOR_TO_INDEX = {"hj1":0, "hj2":1, "llj1":2, "rlj1":3, + "llj2":4, "rlj2":5, "llj3":6, "rlj3":7, + "llj4":8, "rlj4":9, "llj5":10,"rlj5":11, + "llj6":12,"rlj6":13,"laj1":14,"raj1":15, + "laj2":16,"raj2":17,"laj3":18,"raj3":19, + "laj4":20,"raj4":21,"llj7":22,"rlj7":23 } + + # Fix symmetry issues 1a/4 (identification) + FIX_PERCEPTOR_SET = {'rlj2','rlj6','raj2','laj3','laj4'} + FIX_INDICES_LIST = [5,13,17,18,20] + + # Recommended height for unofficial beam (near ground) + BEAM_HEIGHTS = [0.4, 0.43, 0.4, 0.46, 0.4] + + + def __init__(self, unum:int, robot_type:int) -> None: + robot_xml = "nao"+str(robot_type)+".xml" # Typical NAO file name + self.type = robot_type + self.beam_height = Robot.BEAM_HEIGHTS[robot_type] + self.no_of_joints = 24 if robot_type == 4 else 22 + + #Fix symmetry issues 1b/4 (identification) + self.FIX_EFFECTOR_MASK = np.ones(self.no_of_joints) + self.FIX_EFFECTOR_MASK[Robot.FIX_INDICES_LIST] = -1 + + self.body_parts = dict() # keys='body part names' (given by the robot's XML), values='Body_Part objects' + self.unum = unum # Robot's uniform number + self.gyro = np.zeros(3) # Angular velocity along the three axes of freedom of the robot's torso (deg/s) + self.acc = np.zeros(3) # Proper acceleration along the three axes of freedom of the robot's torso (m/s2) + self.frp = dict() # foot "lf"/"rf", toe "lf1"/"rf1" resistance perceptor (relative [p]oint of origin + [f]orce vector) e.g. {"lf":(px,py,pz,fx,fy,fz)} + self.feet_toes_last_touch = {"lf":0,"rf":0,"lf1":0,"rf1":0} # foot "lf"/"rf", toe "lf1"/"rf1" World.time_local_ms when foot/toe last touched any surface + self.feet_toes_are_touching = {"lf":False,"rf":False,"lf1":False,"rf1":False} # foot "lf"/"rf", toe "lf1"/"rf1" True if touching in last received server message + self.fwd_kinematics_list = None # List of body parts, ordered according to dependencies + self.rel_cart_CoM_position = np.zeros(3) # Center of Mass position, relative to head, in cartesian coordinates (m) + + # Joint variables are optimized for performance / array operations + self.joints_position = np.zeros(self.no_of_joints) # Joints' angular position (deg) + self.joints_speed = np.zeros(self.no_of_joints) # Joints' angular speed (rad/s) + self.joints_target_speed = np.zeros(self.no_of_joints) # Joints' target speed (rad/s) (max: 6.1395 rad/s, see rcssserver3d/data/rsg/agent/nao/hingejoint.rsg) + self.joints_target_last_speed = np.zeros(self.no_of_joints) # Joints' last target speed (rad/s) (max: 6.1395 rad/s, see rcssserver3d/data/rsg/agent/nao/hingejoint.rsg) + self.joints_info = [None] * self.no_of_joints # Joints' constant information (see class Joint_Info) + self.joints_transform = [Matrix_4x4() for _ in range(self.no_of_joints)] # Joints' transformation matrix + + # Localization variables relative to head + self.loc_head_to_field_transform = Matrix_4x4() # Transformation matrix from head to field + self.loc_field_to_head_transform = Matrix_4x4() # Transformation matrix from field to head + self.loc_rotation_head_to_field = Matrix_3x3() # Rotation matrix from head to field + self.loc_rotation_field_to_head = Matrix_3x3() # Rotation matrix from field to head + self.loc_head_position = np.zeros(3) # Absolute head position (m) + self.loc_head_position_history = deque(maxlen=40)# Absolute head position history (queue with up to 40 old positions at intervals of 0.04s, where index 0 is the previous position) + self.loc_head_velocity = np.zeros(3) # Absolute head velocity (m/s) (Warning: possibly noisy) + self.loc_head_orientation = 0 # Head orientation (deg) + self.loc_is_up_to_date = False # False if this is not a visual step, or not enough elements are visible + self.loc_last_update = 0 # World.time_local_ms when the localization was last updated + self.loc_head_position_last_update = 0 # World.time_local_ms when loc_head_position was last updated by vision or radio + self.radio_fallen_state = False # True if (radio says we fell) and (radio is significantly more recent than loc) + self.radio_last_update = 0 # World.time_local_ms when radio_fallen_state was last updated (and possibly loc_head_position) + + # Localization variables relative to torso + self.loc_torso_to_field_rotation = Matrix_3x3() # Rotation matrix from torso to field + self.loc_torso_to_field_transform = Matrix_4x4() # Transformation matrix from torso to field + self.loc_torso_roll = 0 # Torso roll (deg) + self.loc_torso_pitch = 0 # Torso pitch (deg) + self.loc_torso_orientation = 0 # Torso orientation (deg) + self.loc_torso_inclination = 0 # Torso inclination (deg) (inclination of z-axis in relation to field z-axis) + self.loc_torso_position = np.zeros(3) # Absolute torso position (m) + self.loc_torso_velocity = np.zeros(3) # Absolute torso velocity (m/s) + self.loc_torso_acceleration = np.zeros(3) # Absolute Coordinate acceleration (m/s2) + + # Other localization variables + self.cheat_abs_pos = np.zeros(3) # Absolute head position provided by the server as cheat (m) + self.cheat_ori = 0.0 # Absolute head orientation provided by the server as cheat (deg) + self.loc_CoM_position = np.zeros(3) # Absolute CoM position (m) + self.loc_CoM_velocity = np.zeros(3) # Absolute CoM velocity (m/s) + + # Localization special variables + ''' + self.loc_head_z is often equivalent to self.loc_head_position[2], but sometimes it differs. + There are situations in which the rotation and translation cannot be computed, + but the z-coordinate can still be found through vision, in which case: + self.loc_is_up_to_date is False + self.loc_head_z_is_up_to_date is True + It should be used in applications which rely on z as an independent coordinate, such + as detecting if the robot has fallen, or as an observation for machine learning. + It should NEVER be used for 3D transformations. + ''' + self.loc_head_z = 0 # Absolute head position (z) - see above for explanation (m) + self.loc_head_z_is_up_to_date = False # False if this is not a visual step, or not enough elements are visible + self.loc_head_z_last_update = 0 # World.time_local_ms when loc_head_z was last computed + self.loc_head_z_vel = 0 # Absolute head velocity (z) (m/s) + + # Localization + Gyroscope + # These variables are reliable. The gyroscope is used to update the rotation when waiting for the next visual cycle + self.imu_torso_roll = 0 # Torso roll (deg) (src: Localization + Gyro) + self.imu_torso_pitch = 0 # Torso pitch (deg) (src: Localization + Gyro) + self.imu_torso_orientation = 0 # Torso orientation (deg) (src: Localization + Gyro) + self.imu_torso_inclination = 0 # Torso inclination (deg) (src: Localization + Gyro) + self.imu_torso_to_field_rotation = Matrix_3x3() # Rotation matrix from torso to field (src: Localization + Gyro) + self.imu_last_visual_update = 0 # World.time_local_ms when the IMU data was last updated with visual information + + # Localization + Gyroscope + Accelerometer + # Warning: these variables are unreliable, since small errors in the Localization Orientation lead to + # wrong acceleration -> wrong velocity -> wrong position + self.imu_weak_torso_to_field_transform = Matrix_4x4() # Transformation matrix from torso to field (src: Localization + Gyro + Acc) + self.imu_weak_head_to_field_transform = Matrix_4x4() # Transformation matrix from head to field (src: Localization + Gyro + Acc) + self.imu_weak_field_to_head_transform = Matrix_4x4() # Transformation matrix from field to head (src: Localization + Gyro + Acc) + self.imu_weak_torso_position = np.zeros(3) # Absolute torso position (m) (src: Localization + Gyro + Acc) + self.imu_weak_torso_velocity = np.zeros(3) # Absolute torso velocity (m/s) (src: Localization + Gyro + Acc) + self.imu_weak_torso_acceleration = np.zeros(3) # Absolute torso acceleration (m/s2) (src: Localization + Gyro + Acc) + self.imu_weak_torso_next_position = np.zeros(3) # Absolute position in next step estimate (m) (src: Localization + Gyro + Acc) + self.imu_weak_torso_next_velocity = np.zeros(3) # Absolute velocity in next step estimate (m/s) (src: Localization + Gyro + Acc) + self.imu_weak_CoM_position = np.zeros(3) # Absolute CoM position (m) (src: Localization + Gyro + Acc) + self.imu_weak_CoM_velocity = np.zeros(3) # Absolute CoM velocity (m/s) (src: Localization + Gyro + Acc) + + + #Using explicit variables to enable IDE suggestions + self.J_HEAD_YAW = 0 + self.J_HEAD_PITCH = 1 + self.J_LLEG_YAW_PITCH = 2 + self.J_RLEG_YAW_PITCH = 3 + self.J_LLEG_ROLL = 4 + self.J_RLEG_ROLL = 5 + self.J_LLEG_PITCH = 6 + self.J_RLEG_PITCH = 7 + self.J_LKNEE = 8 + self.J_RKNEE = 9 + self.J_LFOOT_PITCH = 10 + self.J_RFOOT_PITCH = 11 + self.J_LFOOT_ROLL = 12 + self.J_RFOOT_ROLL = 13 + self.J_LARM_PITCH = 14 + self.J_RARM_PITCH = 15 + self.J_LARM_ROLL = 16 + self.J_RARM_ROLL = 17 + self.J_LELBOW_YAW = 18 + self.J_RELBOW_YAW = 19 + self.J_LELBOW_ROLL = 20 + self.J_RELBOW_ROLL = 21 + self.J_LTOE_PITCH = 22 + self.J_RTOE_PITCH = 23 + + + #------------------ parse robot xml + + dir = M.get_active_directory("/world/commons/robots/") + robot_xml_root = xmlp.parse(dir + robot_xml).getroot() + + joint_no = 0 + for child in robot_xml_root: + if child.tag == "bodypart": + self.body_parts[child.attrib['name']] = Body_Part(child.attrib['mass']) + elif child.tag == "joint": + self.joints_info[joint_no] = Joint_Info(child) + self.joints_position[joint_no] = 0.0 + ji = self.joints_info[joint_no] + + #save joint if body part is 1st anchor (to simplify model traversal in a single direction) + self.body_parts[ji.anchor0_part].joints.append(Robot.MAP_PERCEPTOR_TO_INDEX[ji.perceptor]) + + joint_no += 1 + if joint_no == self.no_of_joints: break #ignore extra joints + + else: + raise NotImplementedError + + assert joint_no == self.no_of_joints, "The Robot XML and the robot type don't match!" + + + def get_head_abs_vel(self, history_steps:int): + ''' + Get robot's head absolute velocity (m/s) + + Parameters + ---------- + history_steps : int + number of history steps to consider [1,40] + + Examples + -------- + get_head_abs_vel(1) is equivalent to (current abs pos - last abs pos) / 0.04 + get_head_abs_vel(2) is equivalent to (current abs pos - abs pos 0.08s ago) / 0.08 + get_head_abs_vel(3) is equivalent to (current abs pos - abs pos 0.12s ago) / 0.12 + ''' + assert 1 <= history_steps <= 40, "Argument 'history_steps' must be in range [1,40]" + + if len(self.loc_head_position_history) == 0: + return np.zeros(3) + + h_step = min(history_steps, len(self.loc_head_position_history)) + t = h_step * Robot.VISUALSTEP + + return (self.loc_head_position - self.loc_head_position_history[h_step-1]) / t + + + def _initialize_kinematics(self): + + #starting with head + parts={"head"} + sequential_body_parts = ["head"] + + while len(parts) > 0: + part = parts.pop() + + for j in self.body_parts[part].joints: + + p = self.joints_info[j].anchor1_part + + if len(self.body_parts[p].joints) > 0: #add body part if it is the 1st anchor of some joint + parts.add(p) + sequential_body_parts.append(p) + + self.fwd_kinematics_list = [(self.body_parts[part],j, self.body_parts[self.joints_info[j].anchor1_part] ) + for part in sequential_body_parts for j in self.body_parts[part].joints] + + #Fix symmetry issues 4/4 (kinematics) + for i in Robot.FIX_INDICES_LIST: + self.joints_info[i].axes *= -1 + aux = self.joints_info[i].min + self.joints_info[i].min = -self.joints_info[i].max + self.joints_info[i].max = -aux + + + def update_localization(self, localization_raw, time_local_ms): + + # parse raw data + loc = localization_raw.astype(float) #32bits to 64bits for consistency + self.loc_is_up_to_date = bool(loc[32]) + self.loc_head_z_is_up_to_date = bool(loc[34]) + + if self.loc_head_z_is_up_to_date: + time_diff = (time_local_ms - self.loc_head_z_last_update) / 1000 + self.loc_head_z_vel = (loc[33] - self.loc_head_z) / time_diff + self.loc_head_z = loc[33] + self.loc_head_z_last_update = time_local_ms + + # Save last position to history at every vision cycle (even if not up to date) (update_localization is only called at vision cycles) + self.loc_head_position_history.appendleft(np.copy(self.loc_head_position)) + + if self.loc_is_up_to_date: + time_diff = (time_local_ms - self.loc_last_update) / 1000 + self.loc_last_update = time_local_ms + self.loc_head_to_field_transform.m[:] = loc[0:16].reshape((4,4)) + self.loc_field_to_head_transform.m[:] = loc[16:32].reshape((4,4)) + + # extract data (related to the robot's head) + self.loc_rotation_head_to_field = self.loc_head_to_field_transform.get_rotation() + self.loc_rotation_field_to_head = self.loc_field_to_head_transform.get_rotation() + p = self.loc_head_to_field_transform.get_translation() + self.loc_head_velocity = (p - self.loc_head_position) / time_diff + self.loc_head_position = p + self.loc_head_position_last_update = time_local_ms + self.loc_head_orientation = self.loc_head_to_field_transform.get_yaw_deg() + self.radio_fallen_state = False + + # extract data (related to the center of mass) + p = self.loc_head_to_field_transform(self.rel_cart_CoM_position) + self.loc_CoM_velocity = (p - self.loc_CoM_position) / time_diff + self.loc_CoM_position = p + + # extract data (related to the robot's torso) + t = self.get_body_part_to_field_transform('torso') + self.loc_torso_to_field_transform = t + self.loc_torso_to_field_rotation = t.get_rotation() + self.loc_torso_orientation = t.get_yaw_deg() + self.loc_torso_pitch = t.get_pitch_deg() + self.loc_torso_roll = t.get_roll_deg() + self.loc_torso_inclination = t.get_inclination_deg() + p = t.get_translation() + self.loc_torso_velocity = (p - self.loc_torso_position) / time_diff + self.loc_torso_position = p + self.loc_torso_acceleration = self.loc_torso_to_field_rotation.multiply(self.acc) + Robot.GRAVITY + + + def head_to_body_part_transform(self, body_part_name, coords, is_batch=False): + ''' + If coord is a vector or list of vectors: + Convert cartesian coordinates that are relative to head to coordinates that are relative to a body part + + If coord is a Matrix_4x4 or a list of Matrix_4x4: + Convert pose that is relative to head to a pose that is relative to a body part + + Parameters + ---------- + body_part_name : `str` + name of body part (given by the robot's XML) + coords : array_like + One 3D position or list of 3D positions + is_batch : `bool` + Indicates if coords is a batch of 3D positions + + Returns + ------- + coord : `list` or ndarray + A numpy array is returned if is_batch is False, otherwise, a list of arrays is returned + ''' + head_to_bp_transform : Matrix_4x4 = self.body_parts[body_part_name].transform.invert() + + if is_batch: + return [head_to_bp_transform(c) for c in coords] + else: + return head_to_bp_transform(coords) + + + + def get_body_part_to_field_transform(self, body_part_name) -> Matrix_4x4: + ''' + Computes the transformation matrix from body part to field, from which we can extract its absolute position and rotation. + For best results, use this method when self.loc_is_up_to_date is True. Otherwise, the forward kinematics + will not be synced with the localization data and strange results may occur. + ''' + return self.loc_head_to_field_transform.multiply(self.body_parts[body_part_name].transform) + + def get_body_part_abs_position(self, body_part_name) -> np.ndarray: + ''' + Computes the absolute position of a body part considering the localization data and forward kinematics. + For best results, use this method when self.loc_is_up_to_date is True. Otherwise, the forward kinematics + will not be synced with the localization data and strange results may occur. + ''' + return self.get_body_part_to_field_transform(body_part_name).get_translation() + + def get_joint_to_field_transform(self, joint_index) -> Matrix_4x4: + ''' + Computes the transformation matrix from joint to field, from which we can extract its absolute position and rotation. + For best results, use this method when self.loc_is_up_to_date is True. Otherwise, the forward kinematics + will not be synced with the localization data and strange results may occur. + ''' + return self.loc_head_to_field_transform.multiply(self.joints_transform[joint_index]) + + def get_joint_abs_position(self, joint_index) -> np.ndarray: + ''' + Computes the absolute position of a joint considering the localization data and forward kinematics. + For best results, use this method when self.loc_is_up_to_date is True. Otherwise, the forward kinematics + will not be synced with the localization data and strange results may occur. + ''' + return self.get_joint_to_field_transform(joint_index).get_translation() + + def update_pose(self): + + if self.fwd_kinematics_list is None: + self._initialize_kinematics() + + for body_part, j, child_body_part in self.fwd_kinematics_list: + ji = self.joints_info[j] + self.joints_transform[j].m[:] = body_part.transform.m + self.joints_transform[j].translate(ji.anchor0_axes, True) + child_body_part.transform.m[:] = self.joints_transform[j].m + child_body_part.transform.rotate_deg(ji.axes, self.joints_position[j], True) + child_body_part.transform.translate(ji.anchor1_axes_neg, True) + + self.rel_cart_CoM_position = np.average([b.transform.get_translation() for b in self.body_parts.values()], 0, + [b.mass for b in self.body_parts.values()]) + + + def update_imu(self, time_local_ms): + + # update IMU + if self.loc_is_up_to_date: + self.imu_torso_roll = self.loc_torso_roll + self.imu_torso_pitch = self.loc_torso_pitch + self.imu_torso_orientation = self.loc_torso_orientation + self.imu_torso_inclination = self.loc_torso_inclination + self.imu_torso_to_field_rotation.m[:] = self.loc_torso_to_field_rotation.m + self.imu_weak_torso_to_field_transform.m[:] = self.loc_torso_to_field_transform.m + self.imu_weak_head_to_field_transform.m[:] = self.loc_head_to_field_transform.m + self.imu_weak_field_to_head_transform.m[:] = self.loc_field_to_head_transform.m + self.imu_weak_torso_position[:] = self.loc_torso_position + self.imu_weak_torso_velocity[:] = self.loc_torso_velocity + self.imu_weak_torso_acceleration[:] = self.loc_torso_acceleration + self.imu_weak_torso_next_position = self.loc_torso_position + self.loc_torso_velocity * Robot.STEPTIME + self.loc_torso_acceleration * (0.5 * Robot.SQ_STEPTIME) + self.imu_weak_torso_next_velocity = self.loc_torso_velocity + self.loc_torso_acceleration * Robot.STEPTIME + self.imu_weak_CoM_position[:] = self.loc_CoM_position + self.imu_weak_CoM_velocity[:] = self.loc_CoM_velocity + self.imu_last_visual_update = time_local_ms + else: + g = self.gyro / 50 # convert degrees per second to degrees per step + + self.imu_torso_to_field_rotation.multiply( Matrix_3x3.from_rotation_deg(g), in_place=True, reverse_order=True) + + self.imu_torso_orientation = self.imu_torso_to_field_rotation.get_yaw_deg() + self.imu_torso_pitch = self.imu_torso_to_field_rotation.get_pitch_deg() + self.imu_torso_roll = self.imu_torso_to_field_rotation.get_roll_deg() + + self.imu_torso_inclination = atan(sqrt(tan(self.imu_torso_roll/180*pi)**2+tan(self.imu_torso_pitch/180*pi)**2))*180/pi + + # Update position and velocity until 0.2 seconds has passed since last visual update + if time_local_ms < self.imu_last_visual_update + 200: + self.imu_weak_torso_position[:] = self.imu_weak_torso_next_position + if self.imu_weak_torso_position[2] < 0: self.imu_weak_torso_position[2] = 0 # limit z coordinate to positive values + self.imu_weak_torso_velocity[:] = self.imu_weak_torso_next_velocity * Robot.IMU_DECAY # stability tradeoff + else: + self.imu_weak_torso_velocity *= 0.97 # without visual updates for 0.2s, the position is locked, and the velocity decays to zero + + # convert proper acceleration to coordinate acceleration and fix rounding bias + self.imu_weak_torso_acceleration = self.imu_torso_to_field_rotation.multiply(self.acc) + Robot.GRAVITY + self.imu_weak_torso_to_field_transform = Matrix_4x4.from_3x3_and_translation(self.imu_torso_to_field_rotation,self.imu_weak_torso_position) + self.imu_weak_head_to_field_transform = self.imu_weak_torso_to_field_transform.multiply(self.body_parts["torso"].transform.invert()) + self.imu_weak_field_to_head_transform = self.imu_weak_head_to_field_transform.invert() + p = self.imu_weak_head_to_field_transform(self.rel_cart_CoM_position) + self.imu_weak_CoM_velocity = (p-self.imu_weak_CoM_position)/Robot.STEPTIME + self.imu_weak_CoM_position = p + + # Next Position = x0 + v0*t + 0.5*a*t^2, Next velocity = v0 + a*t + self.imu_weak_torso_next_position = self.imu_weak_torso_position + self.imu_weak_torso_velocity * Robot.STEPTIME + self.imu_weak_torso_acceleration * (0.5 * Robot.SQ_STEPTIME) + self.imu_weak_torso_next_velocity = self.imu_weak_torso_velocity + self.imu_weak_torso_acceleration * Robot.STEPTIME + + + + def set_joints_target_position_direct(self,indices,values:np.ndarray,harmonize=True,max_speed=7.03,tolerance=0.012,limit_joints=True) -> int: + ''' + Computes the speed of a list of joints, taking as argument the target position + + Parameters + ---------- + indices : `int`/`list`/`slice`/numpy array + joint indices + values : numpy array + target position for each listed joint index + harmonize : `bool` + if True, all joints reach target at same time + max_speed : `float` + max. speed for all joints in deg/step + Most joints have a maximum speed of 351.77 deg/s according to rcssserver3d/data/rsg/agent/nao/hingejoint.rsg + That translates as 7.0354 deg/step or 6.1395 rad/s + tolerance : `float` + angle error tolerance (in degrees) to return that target was reached (returns -1) + limit_joints : `bool` + limit values to the joints' range of motion + + Returns + ------- + remaining_steps : `int` + predicted number of remaining steps or -1 if target was already reached + + Examples + ------- + (let p[tx] be the joint position at t=x) + + Example for return value: moving joint[0] from 0deg to 10deg + pos[t0]: 0, speed[t0]: 7deg/step, ret=2 # target will predictedly be reached in 2 steps + pos[t1]: 7, speed[t1]: 3deg/step, ret=1 # target will predictedly be reached in 1 step (send final action) + pos[t2]: 10, speed[t2]: 0deg/step, ret=0 # target was predictedly already reached + pos[t3]: 10, speed[t3]: 0deg/step, ret=-1 # (best case scenario) server reported with delay, that target was reached (see tolerance) + pos[t?]: 10, speed[t?]: 0deg/step, ret=-1 # if there is friction, it may take some additional steps + + If everything worked as predicted we could stop calling this function when ret==1 + If we need precision, it is recommended to wait for ret==-1 + + Example 1: + set_joints_target_position_direct(range(2,4),np.array([10.0,5.0]),harmonize=True) + Joint[2] p[t0]: 0 target pos: 10 -> p[t1]=5, p[t2]=10 + Joint[3] p[t0]: 0 target pos: 5 -> p[t1]=2.5, p[t2]=5 + + Example 2: + set_joints_target_position_direct([2,3],np.array([10.0,5.0]),harmonize=False) + Joint[2] p[t0]: 0 target pos: 10 -> p[t1]=7, p[t2]=10 + Joint[3] p[t0]: 0 target pos: 5 -> p[t1]=5, p[t2]=5 + ''' + + assert type(values) == np.ndarray, "'values' argument must be a numpy array" + np.nan_to_num(values, copy=False) # Replace NaN with zero and infinity with large finite numbers + + # limit range of joints + if limit_joints: + if type(indices) == list or type(indices) == np.ndarray: + for i in range(len(indices)): + values[i] = np.clip(values[i], self.joints_info[indices[i]].min, self.joints_info[indices[i]].max) + elif type(indices) == slice: + info = self.joints_info[indices] + for i in range(len(info)): + values[i] = np.clip(values[i], info[i].min, info[i].max) + else: # int + values[0] = np.clip(values[0], self.joints_info[indices].min, self.joints_info[indices].max) + + #predicted_diff: predicted difference between reported position and actual position + + predicted_diff = self.joints_target_last_speed[indices] * 1.1459156 #rad/s to deg/step + predicted_diff = np.asarray(predicted_diff) + np.clip(predicted_diff,-7.03,7.03,out=predicted_diff) #saturate predicted movement in-place + + #reported_dist: difference between reported position and target position + + reported_dist = values - self.joints_position[indices] + if np.all((np.abs(reported_dist) < tolerance)) and np.all((np.abs(predicted_diff) < tolerance)): + self.joints_target_speed[indices] = 0 + return -1 + + deg_per_step = reported_dist - predicted_diff + + relative_max = np.max( np.abs(deg_per_step) ) / max_speed + remaining_steps = np.ceil( relative_max ) + + if remaining_steps == 0: + self.joints_target_speed[indices] = 0 + return 0 + + if harmonize: + deg_per_step /= remaining_steps + else: + np.clip(deg_per_step,-max_speed,max_speed,out=deg_per_step) #limit maximum speed + + self.joints_target_speed[indices] = deg_per_step * 0.87266463 #convert to rad/s + + return remaining_steps + + + + def get_command(self) -> bytes: + ''' + Builds commands string from self.joints_target_speed + ''' + j_speed = self.joints_target_speed * self.FIX_EFFECTOR_MASK #Fix symmetry issues 3/4 (effectors) + cmd = "".join(f"({self.joints_info[i].effector} {j_speed[i]:.5f})" for i in range(self.no_of_joints)).encode('utf-8') + + self.joints_target_last_speed = self.joints_target_speed #1. both point to the same array + self.joints_target_speed = np.zeros_like(self.joints_target_speed) #2. create new array for joints_target_speed + return cmd diff --git a/world/World.py b/world/World.py new file mode 100644 index 0000000..c575bc5 --- /dev/null +++ b/world/World.py @@ -0,0 +1,431 @@ +from collections import deque +from cpp.ball_predictor import ball_predictor +from cpp.localization import localization +from logs.Logger import Logger +from math import atan2, pi +from math_ops.Matrix_4x4 import Matrix_4x4 +from world.commons.Draw import Draw +from world.commons.Other_Robot import Other_Robot +from world.Robot import Robot +import numpy as np + + +class World(): + STEPTIME = 0.02 # Fixed step time + STEPTIME_MS = 20 # Fixed step time in milliseconds + VISUALSTEP = 0.04 # Fixed visual step time + VISUALSTEP_MS = 40 # Fixed visual step time in milliseconds + + # play modes in our favor + M_OUR_KICKOFF = 0 + M_OUR_KICK_IN = 1 + M_OUR_CORNER_KICK = 2 + M_OUR_GOAL_KICK = 3 + M_OUR_FREE_KICK = 4 + M_OUR_PASS = 5 + M_OUR_DIR_FREE_KICK = 6 + M_OUR_GOAL = 7 + M_OUR_OFFSIDE = 8 + + # play modes in their favor + M_THEIR_KICKOFF = 9 + M_THEIR_KICK_IN = 10 + M_THEIR_CORNER_KICK = 11 + M_THEIR_GOAL_KICK = 12 + M_THEIR_FREE_KICK = 13 + M_THEIR_PASS = 14 + M_THEIR_DIR_FREE_KICK = 15 + M_THEIR_GOAL = 16 + M_THEIR_OFFSIDE = 17 + + # neutral play modes + M_BEFORE_KICKOFF = 18 + M_GAME_OVER = 19 + M_PLAY_ON = 20 + + # play mode groups + MG_OUR_KICK = 0 + MG_THEIR_KICK = 1 + MG_ACTIVE_BEAM = 2 + MG_PASSIVE_BEAM = 3 + MG_OTHER = 4 # play on, game over + + FLAGS_CORNERS_POS = ((-15,-10,0), (-15,+10,0), (+15,-10,0), (+15,+10,0)) + FLAGS_POSTS_POS = ((-15,-1.05,0.8),(-15,+1.05,0.8),(+15,-1.05,0.8),(+15,+1.05,0.8)) + + def __init__(self,robot_type:int, team_name:str, unum:int, apply_play_mode_correction:bool, + enable_draw:bool, logger:Logger, host:str) -> None: + + self.team_name = team_name # Name of our team + self.team_name_opponent : str = None # Name of opponent team + self.apply_play_mode_correction = apply_play_mode_correction # True to adjust ball position according to play mode + self.step = 0 # Total number of received simulation steps (always in sync with self.time_local_ms) + self.time_server = 0.0 # Time, in seconds, as indicated by the server (this time is NOT reliable, use only for synchronization between agents) + self.time_local_ms = 0 # Reliable simulation time in milliseconds, use this when possible (it is incremented 20ms for every TCP message) + self.time_game = 0.0 # Game time, in seconds, as indicated by the server + self.goals_scored = 0 # Goals score by our team + self.goals_conceded = 0 # Goals conceded by our team + self.team_side_is_left : bool = None # True if our team plays on the left side (this value is later changed by the world parser) + self.play_mode = None # Play mode of the soccer game, provided by the server + self.play_mode_group = None # Certain play modes share characteristics, so it makes sense to group them + self.flags_corners : dict = None # corner flags, key=(x,y,z), always assume we play on the left side + self.flags_posts : dict = None # goal posts, key=(x,y,z), always assume we play on the left side + self.ball_rel_head_sph_pos = np.zeros(3) # Ball position relative to head (spherical coordinates) (m, deg, deg) + self.ball_rel_head_cart_pos = np.zeros(3) # Ball position relative to head (cartesian coordinates) (m) + self.ball_rel_torso_cart_pos = np.zeros(3) # Ball position relative to torso (cartesian coordinates) (m) + self.ball_rel_torso_cart_pos_history = deque(maxlen=20) # Ball position relative to torso history (queue with up to 20 old positions at intervals of 0.04s, where index 0 is the previous position) + self.ball_abs_pos = np.zeros(3) # Ball absolute position (up to date if self.ball_is_visible and self.robot.loc_is_up_to_date) (m) + self.ball_abs_pos_history = deque(maxlen=20) # Ball absolute position history (queue with up to 20 old positions at intervals of 0.04s, where index 0 is the previous position) + self.ball_abs_pos_last_update = 0 # World.time_local_ms when self.ball_abs_pos was last updated by vision or radio + self.ball_abs_vel = np.zeros(3) # Ball velocity vector based on the last 2 known values of self.ball_abs_pos (m/s) (Warning: noisy if ball is distant, use instead get_ball_abs_vel) + self.ball_abs_speed = 0 # Ball scalar speed based on the last 2 known values of self.ball_abs_pos (m/s) (Warning: noisy if ball is distant, use instead ||get_ball_abs_vel||) + self.ball_is_visible = False # True if the last server message contained vision information related to the ball + self.is_ball_abs_pos_from_vision = False # True if ball_abs_pos originated from vision, False if it originated from radio + self.ball_last_seen = 0 # World.time_local_ms when ball was last seen (note: may be different from self.ball_abs_pos_last_update) + self.ball_cheat_abs_pos = np.zeros(3) # Absolute ball position provided by the server as cheat (m) + self.ball_cheat_abs_vel = np.zeros(3) # Absolute velocity vector based on the last 2 values of self.ball_cheat_abs_pos (m/s) + self.ball_2d_pred_pos = np.zeros((1,2)) # prediction of current and future 2D ball positions* + self.ball_2d_pred_vel = np.zeros((1,2)) # prediction of current and future 2D ball velocities* + self.ball_2d_pred_spd = np.zeros(1) # prediction of current and future 2D ball linear speeds* + # *at intervals of 0.02 s until ball comes to a stop or gets out of bounds (according to prediction) + self.lines = np.zeros((30,6)) # Position of visible lines, relative to head, start_pos+end_pos (spherical coordinates) (m, deg, deg, m, deg, deg) + self.line_count = 0 # Number of visible lines + self.vision_last_update = 0 # World.time_local_ms when last vision update was received + self.vision_is_up_to_date = False # True if the last server message contained vision information + self.teammates = [Other_Robot(i, True ) for i in range(1,12)] # List of teammates, ordered by unum + self.opponents = [Other_Robot(i, False) for i in range(1,12)] # List of opponents, ordered by unum + self.teammates[unum-1].is_self = True # This teammate is self + self.draw = Draw(enable_draw, unum, host, 32769) # Draw object for current player + self.team_draw = Draw(enable_draw, 0, host, 32769) # Draw object shared with teammates + self.logger = logger + self.robot = Robot(unum, robot_type) + + + def log(self, msg:str): + ''' + Shortcut for: + + self.logger.write(msg, True, self.step) + + Parameters + ---------- + msg : str + message to be written after the simulation step + ''' + self.logger.write(msg, True, self.step) + + def get_ball_rel_vel(self, history_steps:int): + ''' + Get ball velocity, relative to torso (m/s) + + Parameters + ---------- + history_steps : int + number of history steps to consider [1,20] + + Examples + -------- + get_ball_rel_vel(1) is equivalent to (current rel pos - last rel pos) / 0.04 + get_ball_rel_vel(2) is equivalent to (current rel pos - rel pos 0.08s ago) / 0.08 + get_ball_rel_vel(3) is equivalent to (current rel pos - rel pos 0.12s ago) / 0.12 + ''' + assert 1 <= history_steps <= 20, "Argument 'history_steps' must be in range [1,20]" + + if len(self.ball_rel_torso_cart_pos_history) == 0: + return np.zeros(3) + + h_step = min(history_steps, len(self.ball_rel_torso_cart_pos_history)) + t = h_step * World.VISUALSTEP + + return (self.ball_rel_torso_cart_pos - self.ball_rel_torso_cart_pos_history[h_step-1]) / t + + def get_ball_abs_vel(self, history_steps:int): + ''' + Get ball absolute velocity (m/s) + + Parameters + ---------- + history_steps : int + number of history steps to consider [1,20] + + Examples + -------- + get_ball_abs_vel(1) is equivalent to (current abs pos - last abs pos) / 0.04 + get_ball_abs_vel(2) is equivalent to (current abs pos - abs pos 0.08s ago) / 0.08 + get_ball_abs_vel(3) is equivalent to (current abs pos - abs pos 0.12s ago) / 0.12 + ''' + assert 1 <= history_steps <= 20, "Argument 'history_steps' must be in range [1,20]" + + if len(self.ball_abs_pos_history) == 0: + return np.zeros(3) + + h_step = min(history_steps, len(self.ball_abs_pos_history)) + t = h_step * World.VISUALSTEP + + return (self.ball_abs_pos - self.ball_abs_pos_history[h_step-1]) / t + + def get_predicted_ball_pos(self, max_speed): + ''' + Get predicted 2D ball position when its predicted speed is equal to or less than `max_speed` + In case that position exceeds the prediction horizon, the last available prediction is returned + + Parameters + ---------- + max_speed : float + maximum speed at which the ball will be moving at returned future position + ''' + b_sp = self.ball_2d_pred_spd + index = len(b_sp) - max( 1, np.searchsorted(b_sp[::-1], max_speed, side='right') ) + return self.ball_2d_pred_pos[index] + + def get_intersection_point_with_ball(self, player_speed): + ''' + Get 2D intersection point with moving ball, based on `self.ball_2d_pred_pos` + + Parameters + ---------- + player_speed : float + average speed at which the robot will chase the ball + + Returns + ------- + 2D intersection point : ndarray + 2D intersection point with moving ball, assuming the robot moves at an avg. speed of `player_speed` + intersection distance : float + distance between current robot position and intersection point + ''' + + params = np.array([*self.robot.loc_head_position[:2], player_speed*0.02, *self.ball_2d_pred_pos.flat], np.float32) + pred_ret = ball_predictor.get_intersection(params) + return pred_ret[:2], pred_ret[2] + + def update(self): + r = self.robot + PM = self.play_mode + W = World + + # reset variables + r.loc_is_up_to_date = False + r.loc_head_z_is_up_to_date = False + + # update play mode groups + if PM in (W.M_PLAY_ON, W.M_GAME_OVER): # most common group + self.play_mode_group = W.MG_OTHER + elif PM in (W.M_OUR_KICKOFF, W.M_OUR_KICK_IN, W.M_OUR_CORNER_KICK, W.M_OUR_GOAL_KICK, + W.M_OUR_OFFSIDE, W.M_OUR_PASS, W.M_OUR_DIR_FREE_KICK, W.M_OUR_FREE_KICK): + self.play_mode_group = W.MG_OUR_KICK + elif PM in (W.M_THEIR_KICK_IN, W.M_THEIR_CORNER_KICK, W.M_THEIR_GOAL_KICK, W.M_THEIR_OFFSIDE, + W.M_THEIR_PASS, W.M_THEIR_DIR_FREE_KICK, W.M_THEIR_FREE_KICK, W.M_THEIR_KICKOFF): + self.play_mode_group = W.MG_THEIR_KICK + elif PM in (W.M_BEFORE_KICKOFF, W.M_THEIR_GOAL): + self.play_mode_group = W.MG_ACTIVE_BEAM + elif PM in (W.M_OUR_GOAL,): + self.play_mode_group = W.MG_PASSIVE_BEAM + elif PM is not None: + raise ValueError(f'Unexpected play mode ID: {PM}') + + r.update_pose() # update forward kinematics + + if self.ball_is_visible: + # Compute ball position, relative to torso + self.ball_rel_torso_cart_pos = r.head_to_body_part_transform("torso",self.ball_rel_head_cart_pos) + + if self.vision_is_up_to_date: # update vision based localization + + # Prepare all variables for localization + + feet_contact = np.zeros(6) + + lf_contact = r.frp.get('lf', None) + rf_contact = r.frp.get('rf', None) + if lf_contact is not None: + feet_contact[0:3] = Matrix_4x4( r.body_parts["lfoot"].transform ).translate( lf_contact[0:3] , True).get_translation() + if rf_contact is not None: + feet_contact[3:6] = Matrix_4x4( r.body_parts["rfoot"].transform ).translate( rf_contact[0:3] , True).get_translation() + + ball_pos = np.concatenate(( self.ball_rel_head_cart_pos, self.ball_cheat_abs_pos)) + + corners_list = [[key in self.flags_corners, 1.0, *key, *self.flags_corners.get(key,(0,0,0))] for key in World.FLAGS_CORNERS_POS] + posts_list = [[key in self.flags_posts , 0.0, *key, *self.flags_posts.get( key,(0,0,0))] for key in World.FLAGS_POSTS_POS] + all_landmarks = np.array(corners_list + posts_list, float) + + # Compute localization + + loc = localization.compute( + r.feet_toes_are_touching['lf'], + r.feet_toes_are_touching['rf'], + feet_contact, + self.ball_is_visible, + ball_pos, + r.cheat_abs_pos, + all_landmarks, + self.lines[0:self.line_count]) + + r.update_localization(loc, self.time_local_ms) + + # Update self in teammates list (only the most useful parameters, add as needed) + me = self.teammates[r.unum-1] + me.state_last_update = r.loc_last_update + me.state_abs_pos = r.loc_head_position + me.state_fallen = r.loc_head_z < 0.3 # uses same criterion as for other teammates - not as reliable as player.behavior.is_ready("Get_Up") + me.state_orientation = r.loc_torso_orientation + me.state_ground_area = (r.loc_head_position[:2],0.2) # relevant for localization demo + + # Save last ball position to history at every vision cycle (even if not up to date) + self.ball_abs_pos_history.appendleft(self.ball_abs_pos) # from vision or radio + self.ball_rel_torso_cart_pos_history.appendleft(self.ball_rel_torso_cart_pos) + + ''' + Get ball position based on vision or play mode + Sources: + Corner kick position - rcssserver3d/plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:1927 (May 2022) + Goal kick position - rcssserver3d/plugin/soccer/soccerruleaspect/soccerruleaspect.cpp:1900 (May 2022) + ''' + ball = None + if self.apply_play_mode_correction: + if PM == W.M_OUR_CORNER_KICK: + ball = np.array([15, 5.483 if self.ball_abs_pos[1] > 0 else -5.483, 0.042], float) + elif PM == W.M_THEIR_CORNER_KICK: + ball = np.array([-15, 5.483 if self.ball_abs_pos[1] > 0 else -5.483, 0.042], float) + elif PM in [W.M_OUR_KICKOFF, W.M_THEIR_KICKOFF, W.M_OUR_GOAL, W.M_THEIR_GOAL]: + ball = np.array([0, 0, 0.042], float) + elif PM == W.M_OUR_GOAL_KICK: + ball = np.array([-14, 0, 0.042], float) + elif PM == W.M_THEIR_GOAL_KICK: + ball = np.array([14, 0, 0.042], float) + + # Discard hard-coded ball position if robot is near that position (in favor of its own vision) + if ball is not None and np.linalg.norm(r.loc_head_position[:2] - ball[:2]) < 1: + ball = None + + if ball is None and self.ball_is_visible and r.loc_is_up_to_date: + ball = r.loc_head_to_field_transform( self.ball_rel_head_cart_pos ) + ball[2] = max(ball[2], 0.042) # lowest z = ball radius + if PM != W.M_BEFORE_KICKOFF: # for compatibility with tests without active soccer rules + ball[:2] = np.clip(ball[:2], [-15,-10], [15,10]) # force ball position to be inside field + + # Update internal ball position (also updated by Radio) + if ball is not None: + time_diff = (self.time_local_ms - self.ball_abs_pos_last_update) / 1000 + self.ball_abs_vel = (ball - self.ball_abs_pos) / time_diff + self.ball_abs_speed = np.linalg.norm(self.ball_abs_vel) + self.ball_abs_pos_last_update = self.time_local_ms + self.ball_abs_pos = ball + self.is_ball_abs_pos_from_vision = True + + # Velocity decay for teammates and opponents (it is later neutralized if the velocity is updated) + for p in self.teammates: + p.state_filtered_velocity *= p.vel_decay + for p in self.opponents: + p.state_filtered_velocity *= p.vel_decay + + # Update teammates and opponents + if r.loc_is_up_to_date: + for p in self.teammates: + if not p.is_self: # if teammate is not self + if p.is_visible: # if teammate is visible, execute full update + self.update_other_robot(p) + elif p.state_abs_pos is not None: # otherwise update its horizontal distance (assuming last known position) + p.state_horizontal_dist = np.linalg.norm(r.loc_head_position[:2] - p.state_abs_pos[:2]) + + for p in self.opponents: + if p.is_visible: # if opponent is visible, execute full update + self.update_other_robot(p) + elif p.state_abs_pos is not None: # otherwise update its horizontal distance (assuming last known position) + p.state_horizontal_dist = np.linalg.norm(r.loc_head_position[:2] - p.state_abs_pos[:2]) + + # Update prediction of ball position/velocity + if self.play_mode_group != W.MG_OTHER: # not 'play on' nor 'game over', so ball must be stationary + self.ball_2d_pred_pos = self.ball_abs_pos[:2].copy().reshape(1, 2) + self.ball_2d_pred_vel = np.zeros((1,2)) + self.ball_2d_pred_spd = np.zeros(1) + + elif self.ball_abs_pos_last_update == self.time_local_ms: # make new prediction for new ball position (from vision or radio) + + params = np.array([*self.ball_abs_pos[:2], *np.copy(self.get_ball_abs_vel(6)[:2])], np.float32) + pred_ret = ball_predictor.predict_rolling_ball(params) + sample_no = len(pred_ret) // 5 * 2 + self.ball_2d_pred_pos = pred_ret[:sample_no].reshape(-1, 2) + self.ball_2d_pred_vel = pred_ret[sample_no:sample_no*2].reshape(-1, 2) + self.ball_2d_pred_spd = pred_ret[sample_no*2:] + + elif len(self.ball_2d_pred_pos) > 1: # otherwise, advance to next predicted step, if available + self.ball_2d_pred_pos = self.ball_2d_pred_pos[1:] + self.ball_2d_pred_vel = self.ball_2d_pred_vel[1:] + self.ball_2d_pred_spd = self.ball_2d_pred_spd[1:] + + r.update_imu(self.time_local_ms) # update imu (must be executed after localization) + + + def update_other_robot(self,other_robot : Other_Robot): + ''' + Update other robot state based on the relative position of visible body parts + (also updated by Radio, with the exception of state_orientation) + ''' + o = other_robot + r = self.robot + + # update body parts absolute positions + o.state_body_parts_abs_pos = o.body_parts_cart_rel_pos.copy() + for bp, pos in o.body_parts_cart_rel_pos.items(): + # Using the IMU could be beneficial if we see other robots but can't self-locate + o.state_body_parts_abs_pos[bp] = r.loc_head_to_field_transform( pos, False ) + + # auxiliary variables + bps_apos = o.state_body_parts_abs_pos # read-only shortcut + bps_2d_apos_list = [v[:2] for v in bps_apos.values()] # list of body parts' 2D absolute positions + avg_2d_pt = np.average(bps_2d_apos_list, axis=0) # 2D avg pos of visible body parts + head_is_visible = 'head' in bps_apos + + # evaluate robot's state (unchanged if head is not visible) + if head_is_visible: + o.state_fallen = bps_apos['head'][2] < 0.3 + + # compute velocity if head is visible + if o.state_abs_pos is not None: + time_diff = (self.time_local_ms - o.state_last_update) / 1000 + if head_is_visible: + # if last position is 2D, we assume that the z coordinate did not change, so that v.z=0 + old_p = o.state_abs_pos if len(o.state_abs_pos)==3 else np.append(o.state_abs_pos, bps_apos['head'][2]) + velocity = (bps_apos['head'] - old_p) / time_diff + decay = o.vel_decay # neutralize decay in all axes + else: # if head is not visible, we only update the x & y components of the velocity + velocity = np.append( (avg_2d_pt - o.state_abs_pos[:2]) / time_diff, 0) + decay = (o.vel_decay,o.vel_decay,1) # neutralize decay (except in the z-axis) + # apply filter + if np.linalg.norm(velocity - o.state_filtered_velocity) < 4: # otherwise assume it was beamed + o.state_filtered_velocity /= decay # neutralize decay + o.state_filtered_velocity += o.vel_filter * (velocity-o.state_filtered_velocity) + + # compute robot's position (preferably based on head) + if head_is_visible: + o.state_abs_pos = bps_apos['head'] # 3D head position, if head is visible + else: + o.state_abs_pos = avg_2d_pt # 2D avg pos of visible body parts + + # compute robot's horizontal distance (head distance, or avg. distance of visible body parts) + o.state_horizontal_dist = np.linalg.norm(r.loc_head_position[:2] - o.state_abs_pos[:2]) + + # compute orientation based on pair of lower arms or feet, or average of both + lr_vec = None + if 'llowerarm' in bps_apos and 'rlowerarm' in bps_apos: + lr_vec = bps_apos['rlowerarm'] - bps_apos['llowerarm'] + + if 'lfoot' in bps_apos and 'rfoot' in bps_apos: + if lr_vec is None: + lr_vec = bps_apos['rfoot'] - bps_apos['lfoot'] + else: + lr_vec = (lr_vec + (bps_apos['rfoot'] - bps_apos['lfoot'])) / 2 + + if lr_vec is not None: + o.state_orientation = atan2(lr_vec[1],lr_vec[0]) * 180 / pi + 90 + + # compute projection of player area on ground (circle) + if o.state_horizontal_dist < 4: # we don't need precision if the robot is farther than 4m + max_dist = np.max(np.linalg.norm(bps_2d_apos_list - avg_2d_pt, axis=1)) + else: + max_dist = 0.2 + o.state_ground_area = (avg_2d_pt,max_dist) + + # update timestamp + o.state_last_update = self.time_local_ms \ No newline at end of file diff --git a/world/__pycache__/Robot.cpython-313.pyc b/world/__pycache__/Robot.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..06d51fc18f0d5057cb5605d0c4738956fff80f6b GIT binary patch literal 30482 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%0AhyepB+PN_GXFit3B(wk}5%*?@9LrI2kYJn>MN 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 PHy$_X3Lh~DDbN20qcK$6 literal 0 HcmV?d00001 diff --git a/world/__pycache__/World.cpython-313.pyc b/world/__pycache__/World.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..aae74cb6b1f8d0cf34c526ef5e19bed5c31853e0 GIT binary patch literal 22202 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 A5C8xG literal 0 HcmV?d00001 diff --git a/world/commons/Body_Part.py b/world/commons/Body_Part.py new file mode 100644 index 0000000..2187480 --- /dev/null +++ b/world/commons/Body_Part.py @@ -0,0 +1,7 @@ +from math_ops.Matrix_4x4 import Matrix_4x4 + +class Body_Part(): + def __init__(self, mass) -> None: + self.mass = float(mass) + self.joints = [] + self.transform = Matrix_4x4() # body part to head transformation matrix \ No newline at end of file diff --git a/world/commons/Draw.py b/world/commons/Draw.py new file mode 100644 index 0000000..952dc22 --- /dev/null +++ b/world/commons/Draw.py @@ -0,0 +1,345 @@ +import socket +from math_ops.Math_Ops import Math_Ops as M +import numpy as np + +class Draw(): + _socket = None + + def __init__(self, is_enabled:bool, unum:int, host:str, port:int) -> None: + self.enabled = is_enabled + self._is_team_right = None + self._unum = unum + self._prefix = f'?{unum}_'.encode() # temporary prefix that should never be used in normal circumstances + + #Create one socket for all instances + if Draw._socket is None: + Draw._socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM ) + Draw._socket.connect((host, port)) + Draw.clear_all() + + + def set_team_side(self, is_right): + ''' Called by world parser to switch side ''' + ''' + Generate an appropriate player ID + RoboViz has a bug/feature: we send "swap buffers for player: 'l_1' and RoboViz + will swap every buffer that contains 'l_1' in the name, including + 'l_10' and 'l_11'. To avoid that, we swap the separator to 'l-10', 'l-11' + ''' + self._is_team_right = is_right + self._prefix = f"{'r' if is_right else 'l'}{'_' if self._unum < 10 else '-'}{self._unum}_".encode() #e.g. b'l_5', b'l-10' + + + @staticmethod + def _send(msg, id, flush): + ''' Private method to send message if RoboViz is accessible ''' + try: + if flush: + Draw._socket.send(msg + id + b'\x00\x00\x00' + id + b'\x00') + else: + Draw._socket.send(msg + id + b'\x00') + except ConnectionRefusedError: + pass + + + def circle(self, pos2d, radius, thickness, color:bytes, id:str, flush=True): + ''' + Draw circle + + Examples + ---------- + Circle in 2D (z=0): circle((-1,2), 3, 2, Draw.Color.red, "my_circle") + ''' + if not self.enabled: return + assert type(color)==bytes, "The RGB color must be a bytes object, e.g. red: b'\xFF\x00\x00'" + assert not np.isnan(pos2d).any(), "Argument 'pos2d' contains 'nan' values" + + if self._is_team_right: + pos2d = (-pos2d[0],-pos2d[1]) + + msg = b'\x01\x00' + ( + f'{f"{pos2d[0] :.4f}":.6s}' + f'{f"{pos2d[1] :.4f}":.6s}' + f'{f"{radius :.4f}":.6s}' + f'{f"{thickness :.4f}":.6s}').encode() + color + + Draw._send(msg, self._prefix + id.encode(), flush) + + + def line(self, p1, p2, thickness, color:bytes, id:str, flush=True): + ''' + Draw line + + Examples + ---------- + Line in 3D: line((0,0,0), (0,0,2), 3, Draw.Color.red, "my_line") + Line in 2D (z=0): line((0,0), (0,1), 3, Draw.Color.red, "my_line") + ''' + if not self.enabled: return + assert type(color)==bytes, "The RGB color must be a bytes object, e.g. red: b'\xFF\x00\x00'" + assert not np.isnan(p1).any(), "Argument 'p1' contains 'nan' values" + assert not np.isnan(p2).any(), "Argument 'p2' contains 'nan' values" + + z1 = p1[2] if len(p1)==3 else 0 + z2 = p2[2] if len(p2)==3 else 0 + + if self._is_team_right: + p1 = (-p1[0],-p1[1],p1[2]) if len(p1)==3 else (-p1[0],-p1[1]) + p2 = (-p2[0],-p2[1],p2[2]) if len(p2)==3 else (-p2[0],-p2[1]) + + msg = b'\x01\x01' + ( + f'{f"{p1[0] :.4f}":.6s}' + f'{f"{p1[1] :.4f}":.6s}' + f'{f"{z1 :.4f}":.6s}' + f'{f"{p2[0] :.4f}":.6s}' + f'{f"{p2[1] :.4f}":.6s}' + f'{f"{z2 :.4f}":.6s}' + f'{f"{thickness :.4f}":.6s}').encode() + color + + Draw._send(msg, self._prefix + id.encode(), flush) + + + def point(self, pos, size, color:bytes, id:str, flush=True): + ''' + Draw point + + Examples + ---------- + Point in 3D: point((1,1,1), 3, Draw.Color.red, "my_point") + Point in 2D (z=0): point((1,1), 3, Draw.Color.red, "my_point") + ''' + if not self.enabled: return + assert type(color)==bytes, "The RGB color must be a bytes object, e.g. red: b'\xFF\x00\x00'" + assert not np.isnan(pos).any(), "Argument 'pos' contains 'nan' values" + + z = pos[2] if len(pos)==3 else 0 + + if self._is_team_right: + pos = (-pos[0],-pos[1],pos[2]) if len(pos)==3 else (-pos[0],-pos[1]) + + msg = b'\x01\x02' + ( + f'{f"{pos[0] :.4f}":.6s}' + f'{f"{pos[1] :.4f}":.6s}' + f'{f"{z :.4f}":.6s}' + f'{f"{size :.4f}":.6s}').encode() + color + + Draw._send(msg, self._prefix + id.encode(), flush) + + + def sphere(self, pos, radius, color:bytes, id:str, flush=True): + ''' + Draw sphere + + Examples + ---------- + Sphere in 3D: sphere((1,1,1), 3, Draw.Color.red, "my_sphere") + Sphere in 2D (z=0): sphere((1,1), 3, Draw.Color.red, "my_sphere") + ''' + if not self.enabled: return + assert type(color)==bytes, "The RGB color must be a bytes object, e.g. red: b'\xFF\x00\x00'" + assert not np.isnan(pos).any(), "Argument 'pos' contains 'nan' values" + + z = pos[2] if len(pos)==3 else 0 + + if self._is_team_right: + pos = (-pos[0],-pos[1],pos[2]) if len(pos)==3 else (-pos[0],-pos[1]) + + msg = b'\x01\x03' + ( + f'{f"{pos[0] :.4f}":.6s}' + f'{f"{pos[1] :.4f}":.6s}' + f'{f"{z :.4f}":.6s}' + f'{f"{radius :.4f}":.6s}').encode() + color + + Draw._send(msg, self._prefix + id.encode(), flush) + + + def polygon(self, vertices, color:bytes, alpha:int, id:str, flush=True): + ''' + Draw polygon + + Examples + ---------- + Polygon in 3D: polygon(((0,0,0),(1,0,0),(0,1,0)), Draw.Color.red, 255, "my_polygon") + ''' + if not self.enabled: return + assert type(color)==bytes, "The RGB color must be a bytes object, e.g. red: b'\xFF\x00\x00'" + assert 0<=alpha<=255, "The alpha channel (degree of opacity) must be in range [0,255]" + + if self._is_team_right: + vertices = [(-v[0],-v[1],v[2]) for v in vertices] + + msg = b'\x01\x04' + bytes([len(vertices)]) + color + alpha.to_bytes(1,'big') + + for v in vertices: + msg += ( + f'{f"{v[0] :.4f}":.6s}' + f'{f"{v[1] :.4f}":.6s}' + f'{f"{v[2] :.4f}":.6s}').encode() + + Draw._send(msg, self._prefix + id.encode(), flush) + + + def annotation(self, pos, text, color:bytes, id:str, flush=True): + ''' + Draw annotation + + Examples + ---------- + Annotation in 3D: annotation((1,1,1), "SOMEtext!", Draw.Color.red, "my_annotation") + Annotation in 2D (z=0): annotation((1,1), "SOMEtext!", Draw.Color.red, "my_annotation") + ''' + if not self.enabled: return + if type(text) != bytes: text = str(text).encode() + assert type(color)==bytes, "The RGB color must be a bytes object, e.g. red: b'\xFF\x00\x00'" + z = pos[2] if len(pos)==3 else 0 + + if self._is_team_right: + pos = (-pos[0],-pos[1],pos[2]) if len(pos)==3 else (-pos[0],-pos[1]) + + msg = b'\x02\x00' + ( + f'{f"{pos[0] :.4f}":.6s}' + f'{f"{pos[1] :.4f}":.6s}' + f'{f"{z :.4f}":.6s}').encode() + color + text + b'\x00' + + Draw._send(msg, self._prefix + id.encode(), flush) + + + def arrow(self, p1, p2, arrowhead_size, thickness, color:bytes, id:str, flush=True): + ''' + Draw arrow + + Examples + ---------- + Arrow in 3D: arrow((0,0,0), (0,0,2), 0.1, 3, Draw.Color.red, "my_arrow") + Arrow in 2D (z=0): arrow((0,0), (0,1), 0.1, 3, Draw.Color.red, "my_arrow") + ''' + if not self.enabled: return + assert type(color)==bytes, "The RGB color must be a bytes object, e.g. red: b'\xFF\x00\x00'" + + # No need to invert sides, the called shapes will handle that + if len(p1)==2: p1 = M.to_3d(p1) + else: p1 = np.asarray(p1) + if len(p2)==2: p2 = M.to_3d(p2) + else: p2 = np.asarray(p2) + + vec = p2-p1 + vec_size = np.linalg.norm(vec) + if vec_size == 0: return #return without warning/error + if arrowhead_size > vec_size: arrowhead_size = vec_size + + ground_proj_perpendicular = np.array([ vec[1], -vec[0], 0 ]) + + if np.all(ground_proj_perpendicular == 0): #vertical arrow + ground_proj_perpendicular = np.array([ arrowhead_size/2, 0, 0 ]) + else: + ground_proj_perpendicular *= arrowhead_size/2 / np.linalg.norm(ground_proj_perpendicular) + + head_start = p2 - vec * (arrowhead_size/vec_size) + head_pt1 = head_start + ground_proj_perpendicular + head_pt2 = head_start - ground_proj_perpendicular + + self.line(p1,p2,thickness,color,id,False) + self.line(p2,head_pt1,thickness,color,id,False) + self.line(p2,head_pt2,thickness,color,id,flush) + + + def flush(self, id): + ''' Flush specific drawing by ID ''' + if not self.enabled: return + + Draw._send(b'\x00\x00', self._prefix + id.encode(), False) + + def clear(self, id): + ''' Clear specific drawing by ID ''' + if not self.enabled: return + + Draw._send(b'\x00\x00', self._prefix + id.encode(), True) #swap buffer twice + + + def clear_player(self): + ''' Clear all drawings made by this player ''' + if not self.enabled: return + + Draw._send(b'\x00\x00', self._prefix, True) #swap buffer twice + + + @staticmethod + def clear_all(): + ''' Clear all drawings of all players ''' + if Draw._socket is not None: + Draw._send(b'\x00\x00\x00\x00\x00',b'',False) #swap buffer twice using no id + + + class Color(): + ''' + Based on X11 colors + The names are restructured to make better suggestions + ''' + pink_violet = b'\xC7\x15\x85' + pink_hot = b'\xFF\x14\x93' + pink_violet_pale = b'\xDB\x70\x93' + pink = b'\xFF\x69\xB4' + pink_pale = b'\xFF\xB6\xC1' + + red_dark = b'\x8B\x00\x00' + red = b'\xFF\x00\x00' + red_brick = b'\xB2\x22\x22' + red_crimson = b'\xDC\x14\x3C' + red_indian = b'\xCD\x5C\x5C' + red_salmon = b'\xFA\x80\x72' + + orange_red = b'\xFF\x45\x00' + orange = b'\xFF\x8C\x00' + orange_ligth = b'\xFF\xA5\x00' + + yellow_gold = b'\xFF\xD7\x00' + yellow = b'\xFF\xFF\x00' + yellow_light = b'\xBD\xB7\x6B' + + brown_maroon =b'\x80\x00\x00' + brown_dark = b'\x8B\x45\x13' + brown = b'\xA0\x52\x2D' + brown_gold = b'\xB8\x86\x0B' + brown_light = b'\xCD\x85\x3F' + brown_pale = b'\xDE\xB8\x87' + + green_dark = b'\x00\x64\x00' + green = b'\x00\x80\x00' + green_lime = b'\x32\xCD\x32' + green_light = b'\x00\xFF\x00' + green_lawn = b'\x7C\xFC\x00' + green_pale = b'\x90\xEE\x90' + + cyan_dark = b'\x00\x80\x80' + cyan_medium = b'\x00\xCE\xD1' + cyan = b'\x00\xFF\xFF' + cyan_light = b'\xAF\xEE\xEE' + + blue_dark = b'\x00\x00\x8B' + blue = b'\x00\x00\xFF' + blue_royal = b'\x41\x69\xE1' + blue_medium = b'\x1E\x90\xFF' + blue_light = b'\x00\xBF\xFF' + blue_pale = b'\x87\xCE\xEB' + + purple_violet = b'\x94\x00\xD3' + purple_magenta = b'\xFF\x00\xFF' + purple_light = b'\xBA\x55\xD3' + purple_pale = b'\xDD\xA0\xDD' + + white = b'\xFF\xFF\xFF' + gray_10 = b'\xE6\xE6\xE6' + gray_20 = b'\xCC\xCC\xCC' + gray_30 = b'\xB2\xB2\xB2' + gray_40 = b'\x99\x99\x99' + gray_50 = b'\x80\x80\x80' + gray_60 = b'\x66\x66\x66' + gray_70 = b'\x4C\x4C\x4C' + gray_80 = b'\x33\x33\x33' + gray_90 = b'\x1A\x1A\x1A' + black = b'\x00\x00\x00' + + @staticmethod + def get(r,g,b): + ''' Get RGB color (0-255) ''' + return bytes([int(r),int(g),int(b)]) diff --git a/world/commons/Joint_Info.py b/world/commons/Joint_Info.py new file mode 100644 index 0000000..5fac4f1 --- /dev/null +++ b/world/commons/Joint_Info.py @@ -0,0 +1,24 @@ +import numpy as np + +class Joint_Info(): + def __init__(self, xml_element) -> None: + self.perceptor = xml_element.attrib['perceptor'] + self.effector = xml_element.attrib['effector'] + self.axes = np.array([ + float(xml_element.attrib['xaxis']), + float(xml_element.attrib['yaxis']), + float(xml_element.attrib['zaxis'])]) + self.min = int(xml_element.attrib['min']) + self.max = int(xml_element.attrib['max']) + + self.anchor0_part = xml_element[0].attrib['part'] + self.anchor0_axes = np.array([ + float(xml_element[0].attrib['y']), + float(xml_element[0].attrib['x']), + float(xml_element[0].attrib['z'])]) #x and y axes are switched + + self.anchor1_part = xml_element[1].attrib['part'] + self.anchor1_axes_neg = np.array([ + -float(xml_element[1].attrib['y']), + -float(xml_element[1].attrib['x']), + -float(xml_element[1].attrib['z'])]) #x and y axes are switched diff --git a/world/commons/Other_Robot.py b/world/commons/Other_Robot.py new file mode 100644 index 0000000..5b17763 --- /dev/null +++ b/world/commons/Other_Robot.py @@ -0,0 +1,28 @@ +import numpy as np + +#Note: When other robot is seen, all previous body part positions are deleted +# E.g. we see 5 body parts at 0 seconds -> body_parts_cart_rel_pos contains 5 elements +# we see 1 body part at 1 seconds -> body_parts_cart_rel_pos contains 1 element + + +class Other_Robot(): + def __init__(self, unum, is_teammate) -> None: + self.unum = unum # convenient variable to indicate uniform number (same as other robot's index + 1) + self.is_self = False # convenient flag to indicate if this robot is self + self.is_teammate = is_teammate # convenient variable to indicate if this robot is from our team + self.is_visible = False # True if this robot was seen in the last message from the server (it doesn't mean we know its absolute location) + self.body_parts_cart_rel_pos = dict() # cartesian relative position of the robot's visible body parts + self.body_parts_sph_rel_pos = dict() # spherical relative position of the robot's visible body parts + self.vel_filter = 0.3 # EMA filter coefficient applied to self.state_filtered_velocity + self.vel_decay = 0.95 # velocity decay at every vision cycle (neutralized if velocity is updated) + + + # State variables: these are computed when this robot is visible and when the original robot is able to self-locate + self.state_fallen = False # true if the robot is lying down (updated when head is visible) + self.state_last_update = 0 # World.time_local_ms when the state was last updated + self.state_horizontal_dist = 0 # horizontal head distance if head is visible, otherwise, average horizontal distance of visible body parts (the distance is updated by vision or radio when state_abs_pos gets a new value, but also when the other player is not visible, by assuming its last position) + self.state_abs_pos = None # 3D head position if head is visible, otherwise, 2D average position of visible body parts, or, 2D radio head position + self.state_orientation = 0 # orientation based on pair of lower arms or feet, or average of both (WARNING: may be older than state_last_update) + self.state_ground_area = None # (pt_2d,radius) projection of player area on ground (circle), not precise if farther than 3m (for performance), useful for obstacle avoidance when it falls + self.state_body_parts_abs_pos = dict() # 3D absolute position of each body part + self.state_filtered_velocity = np.zeros(3) # 3D filtered velocity (m/s) (if the head is not visible, the 2D part is updated and v.z decays) diff --git a/world/commons/Path_Manager.py b/world/commons/Path_Manager.py new file mode 100644 index 0000000..7cc3443 --- /dev/null +++ b/world/commons/Path_Manager.py @@ -0,0 +1,583 @@ +from cpp.a_star import a_star +from math_ops.Math_Ops import Math_Ops as M +from world.World import World +import math +import numpy as np + + +class Path_Manager(): + MODE_CAUTIOUS = 0 + MODE_DRIBBLE = 1 # safety margins are increased + MODE_AGGRESSIVE = 2 # safety margins are reduced for opponents + + STATUS_SUCCESS = 0 # the pathfinding algorithm was executed normally + STATUS_TIMEOUT = 1 # timeout before the target was reached (may be impossible) + STATUS_IMPOSSIBLE = 2 # impossible to reach target (all options were tested) + STATUS_DIRECT = 3 # no obstacles between start and target (path contains only 2 points: the start and target) + + HOT_START_DIST_WALK = 0.05 # hot start prediction distance (when walking) + HOT_START_DIST_DRIBBLE = 0.10 # hot start prediction distance (when dribbling) + + def __init__(self, world : World) -> None: + self.world = world + + self._draw_obstacles = False # enabled by function 'draw_options' + self._draw_path = False # enabled by function 'draw_options' + self._use_team_channel = False # enabled by function 'draw_options' + + # internal variables to bootstrap the path to start from a prediction (to reduce path instability) + self.last_direction_rad = None + self.last_update = 0 + self.last_start_dist = None + + def draw_options(self, enable_obstacles, enable_path, use_team_drawing_channel=False): + ''' + Enable or disable drawings, and change drawing channel + If self.world.draw.enable is False, these options are ignored + + Parameters + ---------- + enable_obstacles : bool + draw relevant obstacles for path planning + enable_path : bool + draw computed path + use_team_drawing_channel : bool + True to use team drawing channel, otherwise use individual channel + Using individual channels for each player means that drawings with the same name can coexist + With the team channel, drawings with the same name will replace previous drawings, even if drawn by a teammate + ''' + self._draw_obstacles = enable_obstacles + self._draw_path = enable_path + self._use_team_channel = use_team_drawing_channel + + def get_obstacles(self, include_teammates, include_opponents, include_play_mode_restrictions, max_distance = 4, max_age = 500, + ball_safety_margin = 0, goalpost_safety_margin = 0, mode = MODE_CAUTIOUS, priority_unums=[]): + ''' + Parameters + ---------- + include_teammates : bool + include teammates in the returned list of obstacles + include_opponents : bool + include opponents in the returned list of obstacles + max_distance : float + teammates or opponents are only considered if they are closer than `max_distance` (meters) + max_age : float + teammates or opponents are only considered if they were seen in the last `max_age` (milliseconds) + ball_safety_margin : float + minimum value for the ball's soft repulsion radius + this value is increased when the game is stopped, and when the ball is almost out of bounds + default is zero, the ball is ignored + goalpost_safety_margin : float + hard repulsion radius around the opponents' goalposts + default is zero, uses the minimum margin + mode : int + overall attitude towards safety margins (concerns teammates and opponents) + priority_unums : list + list of teammates to avoid (since their role is more important) + + Returns + ------- + obstacles : list + list of obstacles, where each obstacle is a tuple of 5 floats (x, y, hard radius, soft radius, repulsive force) + ''' + w = self.world + + ball_2d = w.ball_abs_pos[:2] + obstacles = [] + + # 'comparator' is a variable local to the lambda, which captures the current value of (w.time_local_ms - max_age) + check_age = lambda last_update, comparator = w.time_local_ms - max_age : last_update > 0 and last_update >= comparator + + #---------------------------------------------- Get recently seen close teammates + if include_teammates: + soft_radius = 1.1 if mode == Path_Manager.MODE_DRIBBLE else 0.6 # soft radius: repulsive force is max at center and fades + + def get_hard_radius(t): + if t.unum in priority_unums: + return 1.0 # extra distance for priority roles + else: + return t.state_ground_area[1]+0.2 + + # Get close teammates (center, hard radius, soft radius, force) + obstacles.extend( (*t.state_ground_area[0], + get_hard_radius(t), + 1.5 if t.unum in priority_unums else soft_radius, + 1.0) # repulsive force + for t in w.teammates if not t.is_self and check_age(t.state_last_update) and t.state_horizontal_dist < max_distance) + + #---------------------------------------------- Get recently seen close opponents + if include_opponents: + + # soft radius: repulsive force is max at center and fades + if mode == Path_Manager.MODE_AGGRESSIVE: + soft_radius = 0.6 + hard_radius = lambda o : 0.2 + elif mode == Path_Manager.MODE_DRIBBLE: + soft_radius = 2.3 + hard_radius = lambda o : o.state_ground_area[1]+0.9 + else: + soft_radius = 1.0 + hard_radius = lambda o : o.state_ground_area[1]+0.2 + + # Get close opponents (center, hard radius, soft radius, force) + obstacles.extend( (*o.state_ground_area[0], + hard_radius(o), + soft_radius, + 1.5 if o.unum == 1 else 1.0) # repulsive force (extra for their GK) + for o in w.opponents if o.state_last_update > 0 and w.time_local_ms - o.state_last_update <= max_age and o.state_horizontal_dist < max_distance) + + #---------------------------------------------- Get play mode restrictions + if include_play_mode_restrictions: + if w.play_mode == World.M_THEIR_GOAL_KICK: + obstacles.extend((15,i,2.1,0,0) for i in range(-2,3)) # 5 circular obstacles to cover their goal area + elif w.play_mode == World.M_THEIR_PASS: + obstacles.append((*ball_2d, 1.2, 0, 0)) + elif w.play_mode in [World.M_THEIR_KICK_IN,World.M_THEIR_CORNER_KICK,World.M_THEIR_FREE_KICK,World.M_THEIR_DIR_FREE_KICK, World.M_THEIR_OFFSIDE]: + obstacles.append((*ball_2d, 2.5, 0, 0)) + + #---------------------------------------------- Get ball + if ball_safety_margin > 0: + + # increase ball safety margin in certain game scenarios + if (w.play_mode_group != w.MG_OTHER) or abs(ball_2d[1])>9.5 or abs(ball_2d[0])>14.5: + ball_safety_margin += 0.12 + + obstacles.append((*ball_2d, 0, ball_safety_margin, 8)) + + #---------------------------------------------- Get goal posts + if goalpost_safety_margin > 0: + obstacles.append((14.75, 1.10,goalpost_safety_margin,0,0)) + obstacles.append((14.75,-1.10,goalpost_safety_margin,0,0)) + + #---------------------------------------------- Draw obstacles + if self._draw_obstacles: + d = w.team_draw if self._use_team_channel else w.draw + if d.enabled: + for o in obstacles: + if o[3] > 0: d.circle(o[:2],o[3],o[4]/2, d.Color.orange, "path_obstacles", False) + if o[2] > 0: d.circle(o[:2],o[2],1, d.Color.red, "path_obstacles", False) + d.flush("path_obstacles") + + return obstacles + + def _get_hot_start(self, start_distance): + ''' + Get hot start position for path (considering the previous path) + (as opposed to a cold start, where the path starts at the player) + ''' + if self.last_update > 0 and self.world.time_local_ms - self.last_update == 20 and self.last_start_dist == start_distance: + return self.world.robot.loc_head_position[:2] + M.vector_from_angle(self.last_direction_rad, is_rad = True) * start_distance + else: + return self.world.robot.loc_head_position[:2] # return cold start if start_distance was different or the position was not updated in the last step + + def _update_hot_start(self, next_dir_rad, start_distance): + ''' Update hot start position for next run ''' + self.last_direction_rad = next_dir_rad + self.last_update = self.world.time_local_ms + self.last_start_dist = start_distance + + def _extract_target_from_path(self, path, path_len, ret_segments): + ret_seg_ceil = math.ceil(ret_segments) + + if path_len >= ret_seg_ceil: + i = ret_seg_ceil * 2 # path index of ceil point (x) + if ret_seg_ceil == ret_segments: + return path[i:i+2] + else: + floor_w = ret_seg_ceil-ret_segments + return path[i-2:i] * floor_w + path[i:i+2] * (1-floor_w) + else: + return path[-2:] # path end + + + def get_path_to_ball(self, x_ori = None, x_dev = -0.2, y_dev = 0, torso_ori = None, torso_ori_thrsh = 1, + priority_unums:list=[], is_aggressive=True, safety_margin = 0.25, timeout = 3000): + ''' + Get next target from path to ball (next absolute position + next absolute orientation) + If the robot is an active player, and close to the ball, it makes sense to be aggressive + If the robot is far, it should follow the role_position instead to predict the intersection with ball + + + Parameters + ---------- + x_ori : float + (This variable allows the specification of a target position, relative to the ball, in a custom reference frame.) + absolute orientation of the custom reference frame's x-axis + if None, the orientation is given by the vector (robot->ball) + x_dev : float + (This variable allows the specification of a target position, relative to the ball, in a custom reference frame.) + target position deviation, in the custom reference frame's x-axis + y_dev : float + (This variable allows the specification of a target position, relative to the ball, in a custom reference frame.) + target position deviation, in the custom reference frame's y-axis + torso_ori : float + torso's target absolute orientation (see `torso_ori_thrsh`) + if None, the orientation is given by the vector (robot->target) + torso_ori_thrsh : float + `torso_ori` will only be applied when the distance between robot and final target is < `torso_ori_thrsh` meters + otherwise, the robot will orient itself towards the final target + priority_unums : list + list of teammates to avoid (since their role is more important) + is_aggressive : bool + if True, safety margins are reduced for opponents + safety_margin : float + repulsion radius around ball to avoid colliding with it + timeout : float + maximum execution time (in microseconds) + + Returns + ------- + next_pos : ndarray + next absolute position from path to ball + next_ori : float + next absolute orientation + distance : float + minimum between (distance to final target) and (distance to ball) + + + Example + ------- + ---------------------------------------------------------------------------------------------- + x_ori | x_dev | y_dev | torso_ori | OBS + -------------+---------+---------+-------------+---------------------------------------------- + None => | - | !0 | - | Not recommended. Will not converge. + (orient. of: | 0 | 0 | None | Frontal ball chase, expected* slow approach + robot->ball) | 0 | 0 | value | Oriented ball chase, expected* slow approach + | >0 | 0 | - | Not recommended. Will not converge. + | <0 | 0 | None | Frontal ball chase until distance == x_dev + | <0 | 0 | value | Oriented ball chase until distance == x_dev + -------------+---------+---------+-------------+---------------------------------------------- + value | - | - | None | Frontal point chase + | - | - | value | Oriented point chase + ---------------------------------------------------------------------------------------------- + * it depends on the caller function (expected slow walking near target) + `torso_ori` will only be applied when the distance between robot and final target is < `torso_ori_thrsh` meters + ''' + + w = self.world + r = w.robot + dev = np.array([x_dev,y_dev]) + dev_len = np.linalg.norm(dev) + dev_mult = 1 + + # use ball prediction if we are further than 0.5 m and in PlayOn + if np.linalg.norm(w.ball_abs_pos[:2] - r.loc_head_position[:2]) > 0.5 and w.play_mode_group == w.MG_OTHER: + ball_2d = w.get_intersection_point_with_ball(0.4)[0] # intersection point, while moving at 0.4 m/s + else: + ball_2d = w.ball_abs_pos[:2] + + # custom reference frame orientation + vec_me_ball = ball_2d - r.loc_head_position[:2] + if x_ori is None: + x_ori = M.vector_angle(vec_me_ball) + + distance_boost = 0 # boost for returned distance to target + if torso_ori is not None and dev_len > 0: + approach_ori_diff = abs(M.normalize_deg( r.imu_torso_orientation - torso_ori )) + if approach_ori_diff > 15: # increase walking speed near target if robot is far from approach orientation + distance_boost = 0.15 + if approach_ori_diff > 30: # increase target distance to ball if robot is far from approach orientation + dev_mult = 1.3 + if approach_ori_diff > 45: # increase safety margin around ball if robot is far from approach orientation + safety_margin = max(0.32,safety_margin) + + #------------------------------------------- get target + + front_unit_vec = M.vector_from_angle(x_ori) + left_unit_vec = np.array([-front_unit_vec[1], front_unit_vec[0]]) + + rel_target = front_unit_vec * dev[0] + left_unit_vec * dev[1] + target = ball_2d + rel_target * dev_mult + target_vec = target - r.loc_head_position[:2] + target_dist = np.linalg.norm(target_vec) + + if self._draw_path: + d = self.world.team_draw if self._use_team_channel else self.world.draw + d.point(target, 4, d.Color.red, "path_target") # will not draw if drawing object is internally disabled + + #------------------------------------------- get obstacles + + # Ignore ball if we are on the same side of the target (with small margin) + if dev_len>0 and np.dot(vec_me_ball, rel_target) < -0.10: + safety_margin = 0 + + obstacles = self.get_obstacles(include_teammates = True, include_opponents = True, include_play_mode_restrictions = True, + ball_safety_margin = safety_margin, + mode = Path_Manager.MODE_AGGRESSIVE if is_aggressive else Path_Manager.MODE_CAUTIOUS, + priority_unums = priority_unums) + + # Add obstacle on the side opposite to the target + if dev_len>0 and safety_margin > 0: + center = ball_2d - M.normalize_vec( rel_target ) * safety_margin + obstacles.append((*center, 0, safety_margin*0.9, 5)) + if self._draw_obstacles: + d = w.team_draw if self._use_team_channel else w.draw + if d.enabled: + d.circle(center,safety_margin*0.8,2.5, d.Color.orange, "path_obstacles_1") + + #------------------------------------------- get path + + # see explanation for the context at the hot start update section below + start_pos = self._get_hot_start(Path_Manager.HOT_START_DIST_WALK) if target_dist > 0.4 else self.world.robot.loc_head_position[:2] + + path, path_len, path_status, path_cost = self.get_path(start_pos, True, obstacles, target, timeout) + path_end = path[-2:] # last position allowed by A* + + #------------------------------------------- get relevant distances + + if w.ball_last_seen > w.time_local_ms - w.VISUALSTEP_MS: # ball is in FOV + raw_ball_dist = np.linalg.norm(w.ball_rel_torso_cart_pos[:2]) # - distance between torso center and ball center + else: # otherwise use absolute coordinates to compute distance + raw_ball_dist = np.linalg.norm(vec_me_ball) # - distance between head center and ball center + + avoid_touching_ball = (w.play_mode_group != w.MG_OTHER) + distance_to_final_target = np.linalg.norm(path_end - r.loc_head_position[:2]) + distance_to_ball = max(0.07 if avoid_touching_ball else 0.14, raw_ball_dist - 0.13) + caution_dist = min(distance_to_ball,distance_to_final_target) + + #------------------------------------------- get next target position + + next_pos = self._extract_target_from_path( path, path_len, ret_segments=1 if caution_dist < 1 else 2 ) + + #------------------------------------------ get next target orientation + + # use given orientation if it exists, else target's orientation if far enough, else current orientation + if torso_ori is not None: + + if caution_dist > torso_ori_thrsh: + next_ori = M.vector_angle(target_vec) + else: + mid_ori = M.normalize_deg( M.vector_angle(vec_me_ball) - M.vector_angle(-dev) - x_ori + torso_ori ) + mid_ori_diff = abs(M.normalize_deg(mid_ori - r.imu_torso_orientation)) + final_ori_diff = abs(M.normalize_deg(torso_ori - r.imu_torso_orientation)) + next_ori = mid_ori if mid_ori_diff + 10 < final_ori_diff else torso_ori + + elif target_dist > 0.1: + next_ori = M.vector_angle(target_vec) + else: + next_ori = r.imu_torso_orientation + + #------------------------------------------ update hot start for next run + + ''' Defining the hot start distance: + - if path_len is zero, there is no hot start, because we are already there (dist=0) + - if the target is close, the hot start is not applied (see above) + - if the next pos is very close (due to hard obstacle), the hot start is the next pos (disttarget) + priority_unums : list + list of teammates to avoid (since their role is more important) + is_aggressive : bool + if True, safety margins are reduced for opponents + timeout : float + maximum execution time (in microseconds) + ''' + + w = self.world + + #------------------------------------------- get target + + target_vec = target - w.robot.loc_head_position[:2] + target_dist = np.linalg.norm(target_vec) + + #------------------------------------------- get obstacles + + obstacles = self.get_obstacles(include_teammates = True, include_opponents = True, include_play_mode_restrictions = True, + mode = Path_Manager.MODE_AGGRESSIVE if is_aggressive else Path_Manager.MODE_CAUTIOUS, priority_unums = priority_unums) + + #------------------------------------------- get path + + # see explanation for the context at the hot start update section below + start_pos = self._get_hot_start(Path_Manager.HOT_START_DIST_WALK) if target_dist > 0.4 else self.world.robot.loc_head_position[:2] + + path, path_len, path_status, path_cost = self.get_path(start_pos, True, obstacles, target, timeout) + path_end = path[-2:] # last position allowed by A* + + #------------------------------------------- get next target position + next_pos = self._extract_target_from_path(path, path_len, ret_segments) + + #------------------------------------------ get next target orientation + + # use given orientation if it exists, else target's orientation if far enough, else current orientation + if torso_ori is not None: + next_ori = torso_ori + elif target_dist > 0.1: + next_ori = M.vector_angle(target_vec) + else: + next_ori = w.robot.imu_torso_orientation + + #------------------------------------------ update hot start for next run + + ''' Defining the hot start distance: + - if path_len is zero, there is no hot start, because we are already there (dist=0) + - if the target is close, the hot start is not applied (see above) + - if the next pos is very close (due to hard obstacle), the hot start is the next pos (distP1_z9;`PpZkg}e{x z(i#A1%lLz96}wYKL0a_-V``!2d&V23GSY@;ky561B$He#v^7m#W0b3r#LRaLS8+PR zI@y&i&~BS&xC5|5X2ZcZ06g^VZ{U_s{s}wSoxXyJ&Yj ze;}?}gJWtK>j~yP8Zwp1qb#N}4Iwf)oTOI1F2wsulrB6sgcv2LbV{A%QV3k5H0F*F z)SgZTBGR<&cM}~eA$|bfwB?!>ybA2plpXpNCe_h7dFL-jvIotjR1oN2xxh$sw literal 0 HcmV?d00001 diff --git a/world/commons/__pycache__/Draw.cpython-313.pyc b/world/commons/__pycache__/Draw.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0ecce4883721e390f6c3d2fcdc14757851b6b8f3 GIT binary patch literal 15467 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 NOl;fx4E9O+{|z4vnLz*m literal 0 HcmV?d00001 diff --git a/world/commons/__pycache__/Joint_Info.cpython-313.pyc b/world/commons/__pycache__/Joint_Info.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..075ce385ea401a8dcc04942f5a88d89ee75a2f11 GIT binary patch literal 2111 zcmbVN-EZ4e6u*w`)JdBTjZMT^lBNL-(n^?U9jv3BK%HQ0QiWzsJQV55q)umu?QrdA z$&e6FQy&m-mD;@w?S=A|KLx9xpi3T*cMlyO&BO z39Qufr1eB1vplx)U2@X}UeJ(we7T}VY$5wbx_ z)2lpDH(AB3`!3^(S*@BCe3P3-)AG37inhn$Cfb(6McZgHynI}$8_efIiwjLIJl@9( zRGQ{-!}po>6`KH-;i&SMQ|Ge5n9<^LwdNW=myD+AaS^^544cd_BR*v~m4_~SkA`lC zTnO!RYnxidbv)m2e9JMl z+wLO=5?S}O6?fg#K3Vyke%i9NM=q zI`9MeQ+=zW&IjuJ?!7?0u_^sHeJHsbs2_kN)m5)NOFvC_v$H?XcZv%^aiRT1P+Z>2 z-g-IF!G!qcM?#N?nU4kVm-tU1ncVhTC#MBDtt|(+_xHj;N>|MuC;mJ8_O7tA+R2uK zY`J|k$S!V5zbk4tn}2ra>78ymxBboT?2gmPUkmcr+ABf+#$I~yd}2uP>W7eFZYgwq zkR-Wxj*VF;{-QjGMDyF+g3r2&|g@NMXYD@##cx7a)=@G^QAfgFf}ApAuxzK|{p%l{G} Gq0Rri5ReT3 literal 0 HcmV?d00001 diff --git a/world/commons/__pycache__/Other_Robot.cpython-313.pyc b/world/commons/__pycache__/Other_Robot.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..14307860506dd4e03069f6c9a13ccc966fad8b77 GIT binary patch literal 1405 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 literal 0 HcmV?d00001 diff --git a/world/commons/robots/nao0.xml b/world/commons/robots/nao0.xml new file mode 100644 index 0000000..878a4e5 --- /dev/null +++ b/world/commons/robots/nao0.xml @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/world/commons/robots/nao1.xml b/world/commons/robots/nao1.xml new file mode 100644 index 0000000..f6297a7 --- /dev/null +++ b/world/commons/robots/nao1.xml @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/world/commons/robots/nao2.xml b/world/commons/robots/nao2.xml new file mode 100644 index 0000000..59a279c --- /dev/null +++ b/world/commons/robots/nao2.xml @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/world/commons/robots/nao3.xml b/world/commons/robots/nao3.xml new file mode 100644 index 0000000..bb35848 --- /dev/null +++ b/world/commons/robots/nao3.xml @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/world/commons/robots/nao4.xml b/world/commons/robots/nao4.xml new file mode 100644 index 0000000..e728ff0 --- /dev/null +++ b/world/commons/robots/nao4.xml @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +