Forum: PogamutUT2004

Paths through arbitrary locations

I'm trying to use the path executor to follow a path through a list of arbitrary Locations.
These Locations are not necessarily near navpoints, but the List it ordered in such a way that
sequential Locations are close enough to each other that they should be reachable.
These paths are based on data collected from human players, and I would like to replay
the Location sequence.

However, the path executor seems to be throwing a fit. Here's the error:

FatalErrorEvent[
    Component:  UT2004SyncLockableWorldView
    Message:    Exception raising event InfoMessage[EndMessage] | Time = 6734.2 | 
    Cause:      class cz.cuni.amis.utils.exception.PogamutException: cz.cuni.amis.pogamut.ut2004.agent.navigation.loquenavigator.LoqueNavigator@17892d5: Can't navigate as the current path element index is out of path range (index = -1, path.size() = 108. (at cz.cuni.amis.pogamut.ut2004.agent.navigation.AbstractUT2004PathNavigator.navigate(AbstractUT2004PathNavigator.java:54))
    Stacktrace:        cz.cuni.amis.pogamut.base.component.controller.ComponentController.fatalError(ComponentController.java:518)
        cz.cuni.amis.pogamut.base.communication.worldview.impl.EventDrivenWorldView.raiseEvent(EventDrivenWorldView.java:105)
        cz.cuni.amis.pogamut.base.communication.worldview.impl.EventDrivenWorldView.innerNotify(EventDrivenWorldView.java:127)
        cz.cuni.amis.pogamut.base.communication.worldview.impl.EventDrivenWorldView.notify(EventDrivenWorldView.java:224)
        cz.cuni.amis.pogamut.base3d.worldview.impl.BatchAwareWorldView.notify(BatchAwareWorldView.java:89)
        cz.cuni.amis.pogamut.ut2004.communication.worldview.UT2004SyncLockableWorldView.processBatch(UT2004SyncLockableWorldView.java:207)
        cz.cuni.amis.pogamut.ut2004.communication.worldview.UT2004SyncLockableWorldView.processBatches(UT2004SyncLockableWorldView.java:190)
        cz.cuni.amis.pogamut.ut2004.communication.worldview.UT2004SyncLockableWorldView.unlock(UT2004SyncLockableWorldView.java:167)
        cz.cuni.amis.pogamut.ut2004.agent.module.logic.SyncUT2004BotLogic.afterLogicException(SyncUT2004BotLogic.java:92)
        cz.cuni.amis.pogamut.base.agent.module.LogicModule$LogicRunner.run(LogicModule.java:420)
        java.lang.Thread.run(Thread.java:619)
    Caused by:         cz.cuni.amis.pogamut.ut2004.agent.navigation.AbstractUT2004PathNavigator.navigate(AbstractUT2004PathNavigator.java:54)
        cz.cuni.amis.pogamut.ut2004.agent.navigation.UT2004PathExecutor.navigate(UT2004PathExecutor.java:172)
        cz.cuni.amis.pogamut.ut2004.agent.navigation.UT2004PathExecutor.eventEndMessage(UT2004PathExecutor.java:155)
        cz.cuni.amis.pogamut.ut2004.agent.navigation.UT2004PathExecutor$2.notify(UT2004PathExecutor.java:47)
        cz.cuni.amis.pogamut.ut2004.agent.navigation.UT2004PathExecutor$2.notify(UT2004PathExecutor.java:44)
        cz.cuni.amis.pogamut.base.communication.worldview.impl.AbstractWorldView$ListenerNotifier.notify(AbstractWorldView.java:99)
        cz.cuni.amis.pogamut.base.communication.worldview.impl.AbstractWorldView$ListenerNotifier.notify(AbstractWorldView.java:78)
        cz.cuni.amis.utils.listener.Listeners.notify(Listeners.java:274)
        cz.cuni.amis.utils.listener.ListenersMap.notify(ListenersMap.java:76)
        cz.cuni.amis.pogamut.base.communication.worldview.impl.AbstractWorldView.notifyLevelAListeners(AbstractWorldView.java:639)
        cz.cuni.amis.pogamut.base.communication.worldview.impl.AbstractWorldView.innerRaiseEvent(AbstractWorldView.java:710)
        cz.cuni.amis.pogamut.base.communication.worldview.impl.AbstractWorldView.raiseEvent(AbstractWorldView.java:614)
        cz.cuni.amis.pogamut.base.communication.worldview.impl.EventDrivenWorldView.raiseEvent(EventDrivenWorldView.java:103)
        cz.cuni.amis.pogamut.base.communication.worldview.impl.EventDrivenWorldView.innerNotify(EventDrivenWorldView.java:127)
        cz.cuni.amis.pogamut.base.communication.worldview.impl.EventDrivenWorldView.notify(EventDrivenWorldView.java:224)
        cz.cuni.amis.pogamut.base3d.worldview.impl.BatchAwareWorldView.notify(BatchAwareWorldView.java:89)
        cz.cuni.amis.pogamut.ut2004.communication.worldview.UT2004SyncLockableWorldView.processBatch(UT2004SyncLockableWorldView.java:207)
        cz.cuni.amis.pogamut.ut2004.communication.worldview.UT2004SyncLockableWorldView.processBatches(UT2004SyncLockableWorldView.java:190)
        cz.cuni.amis.pogamut.ut2004.communication.worldview.UT2004SyncLockableWorldView.unlock(UT2004SyncLockableWorldView.java:167)
        cz.cuni.amis.pogamut.ut2004.agent.module.logic.SyncUT2004BotLogic.afterLogicException(SyncUT2004BotLogic.java:92)
        cz.cuni.amis.pogamut.base.agent.module.LogicModule$LogicRunner.run(LogicModule.java:420)
        java.lang.Thread.run(Thread.java:619)
]

Which Pogamut version are you using? How are you calling the path executor?

I've tried to simulate the exception on NavigationBot archetype in pogamut version 3.2.3. This code worked fine:

@Override
    public void logic() throws PogamutException {
        ArrayList customPath = new ArrayList();

        customPath.add(new Location(-500,-1500,-1790));
        customPath.add(new Location(-1000,-1500,-1790));
        customPath.add(new Location(-1300,-1500,-1790));
        customPath.add(new Location(-1300,-1300,-1790));
        customPath.add(new Location(-1300,-1500,-1790));
        customPath.add(new Location(-1000,-1500,-1790));
        customPath.add(new Location(-500,-1500,-1790));

        if (!pathExecutor.isExecuting()) {
            log.info("Setting custom path now!");
            IPathFuture myPath = new PrecomputedPathFuture(customPath.get(0), customPath.get(customPath.size() - 1), customPath);
            pathExecutor.followPath(myPath);
        }    
    }


Used archetype info:
cz.cuni.amis.pogamut.ut2004.examples
02-navigation-bot-archetype
3.2.3

Best,
Michal
Well, I guess my problem must be caused by using Pogamut 3.1, which I have to keep using
for the moment since I'm participating in the competition at CEC, and the latest versions of
Pogamut aren't working for the version of Gamebots used there.

Thanks though.
Hi Jacob,

again we're very sorry for bugs in the Pogamut code. Apparently, you've dug deeper than anyone else ...
Again for quick fix I would suggest to check out older revision of Pogamut trunk (3.1) and copy paste PathExecutor code and fix it yourself. Unfortunately, we can't maintain older versions of Pogamut ;((( ... academic project :-(

Please let us know if you are able to fix it, thanks.

Jimmy