Commit 2c239fc4 by serfrape

Add the .goto action for PyGomas

parent 3e01403e
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from spade.behaviour import CyclicBehaviour import asyncio
import json
from ast import literal_eval
from loguru import logger
import pyson import pyson
import pyson.runtime import pyson.runtime
import pyson.stdlib import pyson.stdlib
import asyncio from spade.behaviour import CyclicBehaviour
from spade.agent import Agent from spade.agent import Agent
from spade.template import Template from spade.template import Template
from spade.message import Message from spade.message import Message
import json from .ontology import X, Y, Z
from ast import literal_eval
from loguru import logger
PERCEPT_TAG = frozenset( PERCEPT_TAG = frozenset(
[pyson.Literal("source", (pyson.Literal("percept"), ))]) [pyson.Literal("source", (pyson.Literal("percept"), ))])
PRECISION_Z = 0.5
PRECISION_X = 0.5
class BDIAgent(Agent): class BDIAgent(Agent):
...@@ -62,6 +65,19 @@ class BDIAgent(Agent): ...@@ -62,6 +65,19 @@ class BDIAgent(Agent):
msg = Message(to=receiver, body=body, metadata=mdata) msg = Message(to=receiver, body=body, metadata=mdata)
self.agent.submit(self.send(msg)) self.agent.submit(self.send(msg))
yield yield
#
@self.agent.bdi_actions.add(".goto", 3)
def _goto(agent, term, intention):
"""Sets the PyGomas destination. Expects args to be x,y,z"""
args = pyson.grounded(term.args, intention.scope)
absx = abs(args[0] - self.agent.movement.position.x)
absz = abs(args[2] - self.agent.movement.position.z)
if (absx < PRECISION_X) and (absz < PRECISION_Z):
self.agent.movement.position.x = args[0]
self.agent.movement.position.z = args[2]
yield
@self.agent.bdi_actions.add(".custom_action", 1) @self.agent.bdi_actions.add(".custom_action", 1)
def _custom_action(agent, term, intention): def _custom_action(agent, term, intention):
......
TEAM_NONE: int = 0
TEAM_ALLIED: int = 100
TEAM_AXIS: int = 200
PERFORMATIVE: str = "performative"
NAME: str = "name"
TYPE: str = "type"
TEAM: str = "team"
MAP: str = "map"
QTY: str = "qty"
ANGLE: str = "angle"
DISTANCE: str = "distance"
HEALTH: str = "health"
AMMO: str = "ammo"
DEC_HEALTH: str = "dec_health"
AIM: str = "aim"
SHOTS: str = "shots"
X: str = "x"
Y: str = "y"
Z: str = "z"
VEL_X: str = "velx"
VEL_Y: str = "vely"
VEL_Z: str = "velz"
HEAD_X: str = "headx"
HEAD_Y: str = "heady"
HEAD_Z: str = "headz"
FOV: str = "FOV"
PACKS: str = "PACKS"
MEDIC_SERVICE: str = "medic"
AMMO_SERVICE: str = "ammo"
BACKUP_SERVICE: str = "backup"
PERFORMATIVE_BDI: str = "bdi"
PERFORMATIVE_GAME: str = "game"
PERFORMATIVE_PACK_TAKEN: str = "pack_taken"
PERFORMATIVE_PACK: str = "pack"
PERFORMATIVE_SERVICES: str = "services"
PERFORMATIVE_INFORM: str = "inform"
PERFORMATIVE_PACK_LOST: str = "pack_lost"
PERFORMATIVE_SHOT: str = "shot"
PERFORMATIVE_SIGHT: str = "sight"
PERFORMATIVE_DATA: str = "data"
MANAGEMENT_SERVICE: str = "management"
PERFORMATIVE_INIT: str = "init"
PERFORMATIVE_OBJECTIVE: str = "objective"
PERFORMATIVE_GET: str = "get"
PERFORMATIVE_CFM: str = "cfm"
PERFORMATIVE_CFA: str = "cfa"
PERFORMATIVE_CFB: str = "cfb"
ACTION: str = "ACTION"
CREATE: str = "CREATE"
DESTROY: str = "DESTROY"
PERFORMATIVE_REGISTER_AGENT: str = "register_agent"
PERFORMATIVE_DEREGISTER_AGENT: str = "deregister_agent"
PERFORMATIVE_REGISTER_SERVICE: str = "register"
PERFORMATIVE_DEREGISTER_SERVICE: str = "deregister_service"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment