You've already forked OpenUxAS-SoI
mirror of
https://github.com/AdaCore/OpenUxAS-SoI.git
synced 2026-02-12 13:04:49 -08:00
91 lines
3.9 KiB
Python
91 lines
3.9 KiB
Python
#! /usr/bin/env python
|
|
|
|
import xml.dom.minidom
|
|
from xml.dom.minidom import Node
|
|
import pandas as pd
|
|
import glob
|
|
|
|
def get_a_document(filename):
|
|
return xml.dom.minidom.parse(filename)
|
|
|
|
def ProcessMissionCommand(missionCommand):
|
|
isGoodMessage = True
|
|
try:
|
|
firstWaypoint = 0
|
|
elements = missionCommand.getElementsByTagName('FirstWaypoint')
|
|
if elements and elements[0].firstChild and elements[0].firstChild.nodeType == Node.TEXT_NODE:
|
|
firstWaypoint = int(elements[0].firstChild.data)
|
|
|
|
commandID = 0
|
|
elements = missionCommand.getElementsByTagName('CommandID')
|
|
if elements and elements[0].firstChild and elements[0].firstChild.nodeType == Node.TEXT_NODE:
|
|
commandID = int(elements[0].firstChild.data)
|
|
|
|
vehicleID = 0
|
|
elements = missionCommand.getElementsByTagName('VehicleID')
|
|
if elements and elements[0].firstChild and elements[0].firstChild.nodeType == Node.TEXT_NODE:
|
|
vehicleID = int(elements[0].firstChild.data)
|
|
|
|
status = 'Cancelled'
|
|
elements = missionCommand.getElementsByTagName('Status')
|
|
if elements and elements[0].firstChild and elements[0].firstChild.nodeType == Node.TEXT_NODE:
|
|
status = str(elements[0].firstChild.data)
|
|
|
|
waypointList = []
|
|
elements = missionCommand.getElementsByTagName('WaypointList')
|
|
if elements:
|
|
elementWaypoints = elements[0].getElementsByTagName('Waypoint')
|
|
for elementWaypoint in elementWaypoints:
|
|
number = -1
|
|
elements1 = elementWaypoint.getElementsByTagName('Number')
|
|
if elements and elements[0].firstChild and elements[0].firstChild.nodeType == Node.TEXT_NODE:
|
|
number = int(elements1[0].firstChild.data)
|
|
altitude = -1
|
|
elements1 = elementWaypoint.getElementsByTagName('Altitude')
|
|
if elements and elements[0].firstChild and elements[0].firstChild.nodeType == Node.TEXT_NODE:
|
|
altitude = float(elements1[0].firstChild.data)
|
|
latitude = 0
|
|
elements1 = elementWaypoint.getElementsByTagName('Latitude')
|
|
if elements and elements[0].firstChild and elements[0].firstChild.nodeType == Node.TEXT_NODE:
|
|
latitude = float(elements1[0].firstChild.data)
|
|
elements1 = elementWaypoint.getElementsByTagName('Longitude')
|
|
longitude = 0
|
|
if elements and elements[0].firstChild and elements[0].firstChild.nodeType == Node.TEXT_NODE:
|
|
longitude = float(elements1[0].firstChild.data)
|
|
waypointList.append([number,latitude,longitude,altitude])
|
|
# print('# 5a status[' + str(waypointList) + ']')
|
|
waypointListPd = pd.DataFrame(data = waypointList,columns=['number','latitude','longitude','altitude'])
|
|
|
|
except StandardError:
|
|
print('### Error encountered while processing the MissionCommand ###')
|
|
isGoodMessage = False
|
|
except:
|
|
print('### Error encountered while processing the MissionCommand ###Unexpected error:', sys.exc_info()[0])
|
|
isGoodMessage = False
|
|
if isGoodMessage:
|
|
return [vehicleID,firstWaypoint,commandID,status,waypointListPd]
|
|
|
|
def ProcessAutomationResponseFile(filename):
|
|
doc2 = get_a_document(filename)
|
|
|
|
originalResponse = doc2.getElementsByTagName('OriginalResponse')
|
|
automationResponse = originalResponse[0].getElementsByTagName('AutomationResponse')
|
|
missionCommandList = automationResponse[0].getElementsByTagName('MissionCommandList')
|
|
missionCommands = missionCommandList[0].getElementsByTagName('MissionCommand')
|
|
missionCommandArray = []
|
|
for missionCommand in missionCommands:
|
|
missionCommandArray.append(ProcessMissionCommand(missionCommand))
|
|
return missionCommandArray
|
|
|
|
def main():
|
|
missionCommandArray = []
|
|
for AutomationResponseFile in glob.glob('UniqueAutomationResponse*'):
|
|
print('loading [' + AutomationResponseFile + ']')
|
|
missionCommandArray = ProcessAutomationResponseFile(AutomationResponseFile)
|
|
missionCommandArrayPd = pd.DataFrame(data = missionCommandArray,columns=['vehicleID','firstWaypoint','commandID','status','waypointListPd'])
|
|
print('saving [MissionCommands.pkl]')
|
|
missionCommandArrayPd.to_pickle('MissionCommands.pkl')
|
|
|
|
if __name__ == '__main__':
|
|
main()
|