private void ParseV2RelPacket(BinaryReader br)
        {
            PoseRelData d = new PoseRelData();

            int ts_secs = br.ReadInt32();
            int ts_ticks = br.ReadInt32();
            d.timestamp = new CarTimestamp(ts_secs, ts_ticks);

            int flag = br.ReadInt32();
            // ignore flags for now

            d.dt = br.ReadDouble();

            for (int i = 0; i < 4; i++) {
                for (int j = 0; j < 4; j++) {
                    d.transform[i, j] = br.ReadDouble();
                }
            }

            if (PoseRelReceived != null) {
                PoseRelReceived(this, new PoseRelReceivedEventArgs(d));
            }
        }
 public PoseRelReceivedEventArgs(PoseRelData d)
 {
     this.d = d;
 }
        private static object ParseV2RelPacket(BinaryReader br)
        {
            PoseRelData d = new PoseRelData();

            int ts_secs = br.ReadInt32();
            int ts_ticks = br.ReadInt32();
            d.timestamp = new CarTimestamp(ts_secs, ts_ticks);

            int flag = br.ReadInt32();
            // ignore flags for now

            d.dt = br.ReadDouble();

            for (int i = 0; i < 4; i++) {
                for (int j = 0; j < 4; j++) {
                    d.transform[i, j] = br.ReadDouble();
                }
            }

            return d;
        }