open-dis-python
open-dis-python copied to clipboard
Something seems to be very off in the way the data is packed up
I feel like I may be missing something here. I'm springboarding off the example sender like:
pdu = EntityStatePdu()
pdu.length = 144 #gotta figure this shit out
pdu.exerciseID = 250
pdu.entityID.entityID = 42
pdu.entityID.siteID = 1
pdu.entityID.applicationID = 11
pdu.marking.setString('Igor3d')
pdu.entityType.domain = 2
pdu.entityType.country = 255
pdu.entityType.entityKind = 1
pdu.forceId = 1
myLocation = [-5.482955764588357, # longitude
35.198894404096315, # latitude
10000, # altitude
0, # roll
0, # pitch
0 # yaw
]
pdu.entityLocation.x = myLocation[0]
pdu.entityLocation.y = myLocation[1]
pdu.entityLocation.z = myLocation[2]
pdu.entityOrientation.psi = myLocation[3]
pdu.entityOrientation.theta = myLocation[4]
pdu.entityOrientation.phi = myLocation[5]
memoryStream = BytesIO()
outputStream = DataOutputStream(memoryStream)
pdu.serialize(outputStream)
data = memoryStream.getvalue()
while True:
udpSocket.sendto(data, (DESTINATION_ADDRESS, UDP_PORT))
pp.pprint(vars(pdu))
pp.pprint(vars(pdu.entityID))
pp.pprint(vars(pdu.entityType))
pp.pprint(vars(pdu.entityLocation))
print("Sent {}. {} bytes to {}:{}".format(pdu.__class__.__name__, len(data), DESTINATION_ADDRESS, UDP_PORT))
time.sleep(5)
Then, when I send the data it is printed as below:
{ 'alternativeEntityType': <opendis.dis7.EntityType object at 0x7f0a18fb81c0>,
'capabilities': 0,
'deadReckoningParameters': <opendis.dis7.DeadReckoningParameters object at 0x7f0a18fb8bb0>,
'entityAppearance': 0,
'entityID': <opendis.dis7.EntityID object at 0x7f0a18fb83d0>,
'entityLinearVelocity': <opendis.dis7.Vector3Float object at 0x7f0a18fb85e0>,
'entityLocation': <opendis.dis7.Vector3Double object at 0x7f0a18fb86a0>,
'entityOrientation': <opendis.dis7.EulerAngles object at 0x7f0a18fb8ca0>,
'entityType': <opendis.dis7.EntityType object at 0x7f0a18fb8cd0>,
'exerciseID': 250,
'forceId': 1,
'length': 144,
'marking': <opendis.dis7.EntityMarking object at 0x7f0a1869f4c0>,
'numberOfVariableParameters': 0,
'padding': 0,
'pduStatus': 0,
'pduType': 1,
'protocolFamily': 1,
'protocolVersion': 7,
'timestamp': 0,
'variableParameters': []}
{'applicationID': 11, 'entityID': 42, 'siteID': 1}
{ 'category': 0,
'country': 255,
'domain': 2,
'entityKind': 1,
'extra': 0,
'specific': 0,
'subcategory': 0}
{'x': -5.482955764588357, 'y': 35.198894404096315, 'z': 10000}
Looks great so far. HOWEVER, when I check the packet in Wireshark I get:
"dis": {
"Header": {
"dis.proto_ver": "7",
"dis.exer_id": "250",
"dis.pdu_type": "1",
"dis.proto_fam": "1",
"dis.timestamp": "0.000000000",
"dis.pdu_length": "144",
"dis.pdu_status": "0x00000000",
"dis.pdu_status_tree": {
"dis.pdustatus.cei": "0x00000000",
"dis.pdustatus.lvc": "0x00000000",
"dis.pdustatus.tei": "0x00000000"
},
"dis.padding": "00"
},
"Entity State PDU": {
"Entity ID": {
"dis.entity_id_site": "1",
"dis.entity_id_application": "11",
"dis.entity_id_entity": "42"
},
"dis.force_id": "1",
"dis.num_articulation_params": "0",
"Entity Type, (0:0:0:0:144:1:2) ": {
"dis.entityKind": "0",
"dis.entityDomain": "0",
"dis.country": "0",
"dis.category": "0",
"dis.subcategory": "144",
"dis.specific": "1",
"dis.extra": "2"
},
"Alternative Entity Type, (0:255:0:0:0:0:0) ": {
"dis.entityKind": "0",
"dis.entityDomain": "255",
"dis.country": "0",
"dis.category": "0",
"dis.subcategory": "0",
"dis.specific": "0",
"dis.extra": "0"
},
"Entity Linear Velocity": {
"dis.entity_linear_velocity.x": "0",
"dis.entity_linear_velocity.y": "0",
"dis.entity_linear_velocity.z": "0"
},
"Entity Location": {
"dis.entity_location.x": "2.42946900029516e-319",
"dis.entity_location.y": "-3.23371005475282e+224",
"dis.entity_location.z": "-4.9118429119158e-186"
},
"Entity Orientation": {
"dis.entity_orientation.psi": "-3.85186e-34",
"dis.entity_orientation.theta": "0",
"dis.entity_orientation.phi": "0"
},
"dis.appearance": "0x00000000",
"Dead Reckoning Parameters": {
"dis.entity_marking_character_set": "0",
"dis.dead_reckoning_other_parameters": "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00",
"Entity Linear Acceleration": {
"dis.entity_linear_acceleration.x": "0",
"dis.entity_linear_acceleration.y": "0",
"dis.entity_linear_acceleration.z": "0"
},
"Entity Angular Velocity": {
"dis.entity_angular_velocity.x": "0",
"dis.entity_angular_velocity.y": "0",
"dis.entity_angular_velocity.z": "0"
}
},
"Entity Marking": {
"dis.entity_marking_character_set": "0"
},
"dis.capabilities": "1677721600"
As you can see, the entityType and location info is ignored or changed. Any help in understanding what I'm doing wrong would be greatly appreciated. Thank you