Пример #1
0
 def initialize(self):
     """
     Initializes HLA (connection to RTIg, FOM file, publish robots...)
     
     """
     logger.info("Initializing HLA node.")
     if os.getenv("CERTI_HTTP_PROXY") == None:
         os.environ["CERTI_HTTP_PROXY"] = ""
     os.environ["CERTI_HOST"] = str(self.host)
     os.environ["CERTI_TCP_PORT"] = str(self.port)
     logger.debug("CERTI_HTTP_PROXY= %s", os.environ["CERTI_HTTP_PROXY"])
     logger.debug("CERTI_HOST= %s", os.environ["CERTI_HOST"])
     logger.debug("CERTI_TCP_PORT= %s", os.environ["CERTI_TCP_PORT"])
     try:
         logger.debug("Creating RTIA...")
         self.rtia = rti.RTIAmbassador()
         logger.debug("RTIA created!")
         try:
             self.rtia.createFederationExecution(self.federation, self.fom)
             logger.info("%s federation created", self.federation)
         except rti.FederationExecutionAlreadyExists:
             logger.debug("%s federation already exists", self.federation)
         except rti.CouldNotOpenFED:
             logger.error("FED file not found! " + \
                 "Please check that the '.fed' file is in the CERTI " + \
                 "search path of RTIg.")
             return False
         except rti.ErrorReadingFED:
             logger.error("Error when reading FED file! " + \
                 "Please check the '.fed' file syntax.")
             return False
         logger.debug("Creating MorseAmbassador...")
         self.morse_ambassador = MorseAmbassador(self.rtia, self.federation,
                                                 self.time_sync, 0, self.gl)
         try:
             self.rtia.joinFederationExecution(self.node_name,
                                               self.federation,
                                               self.morse_ambassador)
         except rti.FederateAlreadyExecutionMember:
             logger.error("A Federate with name %s has already registered."+\
                 " Change the name of your federate or " + \
                 "check your federation architecture.", self.node_name)
             return False
         except rti.CouldNotOpenFED:
             logger.error("FED file not found! Please check that the " + \
                 "'.fed' file is in the CERTI search path.")
             return False
         except rti.ErrorReadingFED:
             logger.error("Error when reading FED file! "+ \
                 "Please check the '.fed' file syntax.")
             return False
         if self.morse_ambassador.initialize() == False:
             return False
         logger.info("HLA middleware initialized.")
     except Exception as error:
         logger.error("Error when connecting to the RTIg: %s." + \
             "Please check your HLA network configuration.", error)
         raise
Пример #2
0
    def __init__(self, klass, fom, node_name, federation, sync_point,
                 sync_register, time_sync, timestep, lookahead):
        """
        Initializes HLA (connection to RTIg, FOM file, publish robots...)
        """

        logger.info("Initializing HLA node.")

        self._federation = federation
        self._sync_point = sync_point
        self._sync_register = sync_register
        self._time_sync = time_sync

        try:
            logger.debug("Creating RTIA...")
            self.rtia = rti.RTIAmbassador()
            logger.debug("RTIA created!")
            try:
                self.rtia.createFederationExecution(federation, fom)
                logger.info("%s federation created", federation)
            except rti.FederationExecutionAlreadyExists:
                logger.debug("%s federation already exists", federation)
            except rti.CouldNotOpenFED:
                logger.error("FED file not found! " + \
                    "Please check that the '.fed' file is in the CERTI " + \
                    "search path of RTIg.")
                raise
            except rti.ErrorReadingFED:
                logger.error("Error when reading FED file! " + \
                    "Please check the '.fed' file syntax.")
                raise
            logger.debug("Creating MorseAmbassador...")
            self.morse_ambassador = klass(self.rtia, federation, time_sync,
                                          timestep, lookahead)
            try:
                self.rtia.joinFederationExecution(node_name, federation,
                                                  self.morse_ambassador)
            except rti.FederateAlreadyExecutionMember:
                logger.error("A Federate with name %s has already registered."+\
                    " Change the name of your federate or " + \
                    "check your federation architecture.", self.node_name)
                raise
            except rti.CouldNotOpenFED:
                logger.error("FED file not found! Please check that the " + \
                    "'.fed' file is in the CERTI search path.")
                raise
            except rti.ErrorReadingFED:
                logger.error("Error when reading FED file! "+ \
                    "Please check the '.fed' file syntax.")
                raise
            logger.info("HLA middleware initialized.")

        except Exception as error:
            logger.error("Error when connecting to the RTIg: %s." + \
                "Please check your HLA network configuration.", error)
            raise
Пример #3
0
    def __init__(self, federateName):
        '''
        Constructor
        '''

        self.synchState = SynchState.NotInit
        self.granted = False
        self.time = 0.0
        self.timeState = TimeState.NotInit  # these are set but not used in the code

        # object registration
        self.regObjects = [
        ]  # stores handles to registered message object instances (for sending)
        self.otherObjects = [
        ]  # stores handles on message objects registered by other federates (for receiving)

        self.opObjectNames = [
        ]  # stores names of registered object instances (one to one mapping with previous) the names are not used for anything
        self.nameReserved = False  # not used

        # class declaration
        self.opClassHandles = [
        ]  # contains handles on class declarations that are set during publish and used during registerObjectInstance
        self.ipClassHandle = None  # used locally in subscribe and thus shown here only for symmetry sake (not really needed as a class property)

        # class declaration
        # and message passing
        self.ipHandles = {
        }  # contains handles on attribute declarations and is used for subscribe and reflectAttributeValues
        self.opHandles = {
        }  # contains handles on attribute declarations and is used for publish and updateAttributes

        # self.quantizers = {}
        self.subscriptions = {}
        self.publications = {}

        print("Create ambassador")
        self.rtiaReference = rti.RTIAmbassador()
        print(self.rtiaReference)

        self.federateName = federateName
        self.federationName = None  # needed to start/destroy federation
        self.creator = False  # needed to synchronize the start of co-simulation execution
        self.lookAhead = 0  # ???

        self.pendingUpdates = []  # message buffer for incoming messages
        self.TsoMsgReceived = False  # true if time stamped message is received (not used)

        self.test = False
Пример #4
0
#!/usr/bin/env python
import hla.rti as rti


class MyAmbassador(rti.FederateAmbassador):
    pass


rtia = rti.RTIAmbassador()

try:
    rtia.createFederationExecution("VirtualAir", "AviationSimNet-v3.1.fed")
except rti.FederationExecutionAlreadyExists:
    pass

mya = MyAmbassador()
rtia.joinFederationExecution("python-01", "VirtualAir", mya)

spaceHandle = rtia.getRoutingSpaceHandle("Geo")
dimensionHandle = rtia.getDimensionHandle("X", spaceHandle)

region = rtia.createRegion(spaceHandle, [(dimensionHandle, (1, 5))])

rtia.notifyAboutRegionModification(region)

rtia.deleteRegion(region)

# $Id: region_creation.py,v 1.1 2009/06/07 15:12:48 gotthardp Exp $
Пример #5
0
 def __init__(self, robot_name, host="localhost", port=60400):
     self.fom = "morse.fed"
     self.federation = "MORSE"
     self.robot = None
     # Setup environment
     if os.getenv("CERTI_HTTP_PROXY") == None:
         os.environ["CERTI_HTTP_PROXY"] = ""
     os.environ["CERTI_HOST"] = str(host)
     os.environ["CERTI_TCP_PORT"] = str(port)
     # Create Ambassador
     try:
         self.rtia = rti.RTIAmbassador()
         print("Creating MORSE Federation...")
         try:
             self.rtia.createFederationExecution(self.federation, self.fom)
         except rti.FederationExecutionAlreadyExists:
             print("%s federation already exists", self.federation)
         except rti.CouldNotOpenFED:
             print("FED file not found! " + \
                   "Please check that the '.fed' file is in the CERTI " + \
                   "search path of RTIg.")
             return None
         except rti.ErrorReadingFED:
             print("Error when reading FED file! " + \
                   "Please check the '.fed' file syntax.")
             return None
         print("Joining MORSE Federation...")
         try:
             self.morse_ambassador = rti.FederateAmbassador()
             self.rtia.joinFederationExecution("client-hla",
                                               self.federation,
                                               self.morse_ambassador)
         except rti.FederateAlreadyExecutionMember:
             print("A Federate with name %s has already registered."+\
                   " Change the name of your federate or " + \
                   "check your federation architecture.", self.node_name)
             return None
         except rti.CouldNotOpenFED:
             print("FED file not found! Please check that the " + \
                   "'.fed' file is in the CERTI search path.")
             return None
         except rti.ErrorReadingFED:
             print("Error when reading FED file! "+ \
                   "Please check the '.fed' file syntax.")
             return None
         # Get class/attribute handlers
         try:
             self.robot_t = self.rtia.getObjectClassHandle("Robot")
             self.position_t = self.rtia.getAttributeHandle(
                 "position", self.robot_t)
             self.orientation_t = self.rtia.getAttributeHandle(
                 "orientation", self.robot_t)
         except rti.NameNotFound:
             print("'Robot' (or attributes) not declared in FOM." + \
                   "Your '.fed' file may not be up-to-date.")
             return None
         # Declare a robot
         self.rtia.publishObjectClass(self.robot_t,
                                      [self.position_t, self.orientation_t])
         self.robot = self.rtia.registerObjectInstance(
             self.robot_t, robot_name)
         print("Pose of robot %s will be published on the %s federation.",
               robot_name, self.federation)
         print("MorseAmbassador initialized")
     except Exception as error:
         print("Error when connecting to the RTIg: %s." + \
               "Please check your HLA network configuration.", error)
         return None