00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "GT2004TeamBallLocator.h"
00011 #include "Platform/SystemCall.h"
00012
00013 GT2004TeamBallLocator::GT2004TeamBallLocator(const TeamBallLocatorInterfaces& interfaces)
00014 : TeamBallLocator(interfaces)
00015 {
00016 }
00017
00018 void GT2004TeamBallLocator::execute()
00019 {
00020 double validityMax = 0;
00021 int bestIndex = -1;
00022
00023 for(int i = 0; i < teamMessageCollection.numberOfTeamMessages; ++i)
00024 {
00025
00026 unsigned long timeUntilSeenConsecutively
00027 = teamMessageCollection[i]
00028 .getTimeInOwnTime(teamMessageCollection[i].seenBallPosition.timeWhenLastSeen);
00029
00030 if(SystemCall::getTimeSince(timeUntilSeenConsecutively) < 2000)
00031 {
00032
00033
00034 double v = teamMessageCollection[i].robotPose.getValidity();
00035
00036 if(v > validityMax)
00037 {
00038
00039 validityMax = v;
00040 bestIndex = i;
00041 }
00042 }
00043 }
00044
00045 if(bestIndex >= 0)
00046 {
00047
00048
00049 communicatedBallPosition.x = teamMessageCollection[bestIndex].seenBallPosition.x;
00050 communicatedBallPosition.y = teamMessageCollection[bestIndex].seenBallPosition.y;
00051 communicatedBallPosition.timeWhenLastObserved
00052 = teamMessageCollection[bestIndex].getTimeInOwnTime
00053 (teamMessageCollection[bestIndex].seenBallPosition.timeUntilSeenConsecutively);
00054 }
00055 }
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076