Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Something seems to be very off in the way the data is packed up #47

Open
sosukeinu opened this issue Oct 13, 2023 · 0 comments
Open

Something seems to be very off in the way the data is packed up #47

sosukeinu opened this issue Oct 13, 2023 · 0 comments

Comments

@sosukeinu
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant