From e55db51af528bc39bcd243d6b51978517583d7da Mon Sep 17 00:00:00 2001 From: firestar5683 <168790843+firestar5683@users.noreply.github.com> Date: Mon, 12 Oct 2026 02:20:45 -0600 Subject: [PATCH] Preserve Bolt lateral intent during driver overrides --- openpilot/selfdrive/car/card.py | 17 +- .../locationd/models/generated/car.cpp | 684 +++--- .../locationd/models/generated/car.h | 42 +- .../locationd/models/generated/libcar.so | Bin 24120528 -> 24120520 bytes .../locationd/models/generated/libpose.so | Bin 20605632 -> 20605632 bytes .../locationd/models/generated/pose.cpp | 1938 ++++++++--------- .../locationd/models/generated/pose.h | 26 +- openpilot/selfdrive/selfdrived/selfdrived.py | 11 +- .../aol/tests/test_gm_held_native.py | 427 ++++ openpilot/starpilot/aol/transport_pause.py | 16 +- openpilot/starpilot/car/gm/aol.py | 95 + panda/board/obj/body_h7.bin.signed | Bin 210188 -> 210188 bytes panda/board/obj/bootstub.body_h7.bin | Bin 12128 -> 12128 bytes panda/board/obj/bootstub.panda.bin | Bin 11120 -> 11120 bytes panda/board/obj/bootstub.panda_h7.bin | Bin 18952 -> 18952 bytes panda/board/obj/gitversion.h | 2 +- panda/board/obj/panda.bin.signed | Bin 201132 -> 201132 bytes panda/board/obj/panda_h7.bin.signed | Bin 210716 -> 210716 bytes panda/board/obj/version | 2 +- prebuilt.json | 2 +- 20 files changed, 1907 insertions(+), 1355 deletions(-) create mode 100644 openpilot/starpilot/aol/tests/test_gm_held_native.py diff --git a/openpilot/selfdrive/car/card.py b/openpilot/selfdrive/car/card.py index 4b6cb75c4c..7637cd0141 100755 --- a/openpilot/selfdrive/car/card.py +++ b/openpilot/selfdrive/car/card.py @@ -61,7 +61,7 @@ from openpilot.starpilot.aol.wire import IntentState, encode_intent from openpilot.starpilot.conditional_mode.manual import Button, ButtonTracker, IoniqMediaMapCache, WheelMapCache, Press, ioniq6_media_eligible from openpilot.starpilot.longitudinal.ioniq6_start import eligible as ioniq6_long_eligible from opendbc.car.gm.aol import native_bootstrap_supported, qualified_gm -from opendbc.car.gm.values import CAR as GM_CAR, GMFlags, is_volt_ascm_longitudinal, is_volt_sdgm_profile +from opendbc.car.gm.values import CAR as GM_CAR, GMFlags, is_volt_ascm_longitudinal, is_volt_sdgm_profile, is_bolt_present_no_acc_pedal_profile from opendbc.car.gm.lateral import lane_centering_supported as gm_lane_centering_supported from opendbc.car.gm.ordinary_cc import control_transport_required as gm_cc_transport_required from openpilot.starpilot.longitudinal.toyota_output_policy import CLOCK_PAIR_MAX_SKEW_NS, clock_pair_ns @@ -461,7 +461,9 @@ class Car: self.timing_mark('interface_update_end') cancel_boot_ns = (time.clock_gettime_ns(time.CLOCK_BOOTTIME) if (getattr(self.CI.CS, 'ev6_aol_source_healthy', False) or - qualified_honda_stock_aol(self.CP, marked_only=True)) else 0) + qualified_honda_stock_aol(self.CP, marked_only=True) or + qualified_gm(self.CP) and is_bolt_present_no_acc_pedal_profile(self.CP) and + int(self.CP.alternativeExperience) == 32) else 0) self.observe_ioniq6_long_authority(can_list, CS) self.timing_mark('ioniq_authority_end') media_owner = getattr(self, 'ioniq6_media', None) @@ -534,6 +536,7 @@ class Car: transport_reset = self.aol_transport_feedback.observe(self.sm, self.CP, CS, now_ns, latched=self.aol_card_intent.allowed_latch, cancel_source_ns=self.aol_cancel_source(CS, now_ns), brake_source_ns=self.aol_honda_brake_source(CS, now_ns), + gm_withdrawal_source_ns=self.aol_gm_withdrawal_source(CS, now_ns), intent_producer_session=getattr(self, 'slc_producer_session', '')) fault_active = True if transport_reset else None event_ns = int(self.sm.logMonoTime['onroadEvents']) @@ -762,6 +765,15 @@ class Car: return 0 return received_ns + def aol_gm_withdrawal_source(self, CS, now_ns: int) -> int: + if self.CP.brand != 'gm': + return 0 + from opendbc.car import Bus + from openpilot.starpilot.car.gm.aol import physical_longitudinal_withdrawal_source + parser = getattr(getattr(self, 'CI', None), 'can_parsers', {}).get(Bus.pt) + return physical_longitudinal_withdrawal_source(self.CP, CS, parser, + getattr(self, '_aol_can_observation', None), now_ns) + def aol_disarming_fault(self, CS, event_ns: int, now_ns: int) -> bool: from openpilot.starpilot.car.gm.aol import intent_disarming_fault if getattr(self, 'aol_transport_feedback', None) is None: @@ -769,6 +781,7 @@ class Car: if self.aol_transport_feedback.observe(self.sm, self.CP, CS, now_ns, latched=getattr(getattr(self, 'aol_card_intent', None), 'allowed_latch', True), cancel_source_ns=self.aol_cancel_source(CS, now_ns), brake_source_ns=self.aol_honda_brake_source(CS, now_ns), + gm_withdrawal_source_ns=self.aol_gm_withdrawal_source(CS, now_ns), intent_producer_session=getattr(self, 'slc_producer_session', '')): return True events = self.sm['onroadEvents'] diff --git a/openpilot/selfdrive/locationd/models/generated/car.cpp b/openpilot/selfdrive/locationd/models/generated/car.cpp index 4a15836886..4030f69dab 100644 --- a/openpilot/selfdrive/locationd/models/generated/car.cpp +++ b/openpilot/selfdrive/locationd/models/generated/car.cpp @@ -45,326 +45,326 @@ const static double MAHA_THRESH_31 = 3.8414588206941227; * * * This file is part of 'ekf' * ******************************************************************************/ -void err_fun(double *nom_x, double *delta_x, double *out_8771745385019272911) { - out_8771745385019272911[0] = delta_x[0] + nom_x[0]; - out_8771745385019272911[1] = delta_x[1] + nom_x[1]; - out_8771745385019272911[2] = delta_x[2] + nom_x[2]; - out_8771745385019272911[3] = delta_x[3] + nom_x[3]; - out_8771745385019272911[4] = delta_x[4] + nom_x[4]; - out_8771745385019272911[5] = delta_x[5] + nom_x[5]; - out_8771745385019272911[6] = delta_x[6] + nom_x[6]; - out_8771745385019272911[7] = delta_x[7] + nom_x[7]; - out_8771745385019272911[8] = delta_x[8] + nom_x[8]; +void err_fun(double *nom_x, double *delta_x, double *out_7126582961958922662) { + out_7126582961958922662[0] = delta_x[0] + nom_x[0]; + out_7126582961958922662[1] = delta_x[1] + nom_x[1]; + out_7126582961958922662[2] = delta_x[2] + nom_x[2]; + out_7126582961958922662[3] = delta_x[3] + nom_x[3]; + out_7126582961958922662[4] = delta_x[4] + nom_x[4]; + out_7126582961958922662[5] = delta_x[5] + nom_x[5]; + out_7126582961958922662[6] = delta_x[6] + nom_x[6]; + out_7126582961958922662[7] = delta_x[7] + nom_x[7]; + out_7126582961958922662[8] = delta_x[8] + nom_x[8]; } -void inv_err_fun(double *nom_x, double *true_x, double *out_3231363094273967832) { - out_3231363094273967832[0] = -nom_x[0] + true_x[0]; - out_3231363094273967832[1] = -nom_x[1] + true_x[1]; - out_3231363094273967832[2] = -nom_x[2] + true_x[2]; - out_3231363094273967832[3] = -nom_x[3] + true_x[3]; - out_3231363094273967832[4] = -nom_x[4] + true_x[4]; - out_3231363094273967832[5] = -nom_x[5] + true_x[5]; - out_3231363094273967832[6] = -nom_x[6] + true_x[6]; - out_3231363094273967832[7] = -nom_x[7] + true_x[7]; - out_3231363094273967832[8] = -nom_x[8] + true_x[8]; +void inv_err_fun(double *nom_x, double *true_x, double *out_945533236592444203) { + out_945533236592444203[0] = -nom_x[0] + true_x[0]; + out_945533236592444203[1] = -nom_x[1] + true_x[1]; + out_945533236592444203[2] = -nom_x[2] + true_x[2]; + out_945533236592444203[3] = -nom_x[3] + true_x[3]; + out_945533236592444203[4] = -nom_x[4] + true_x[4]; + out_945533236592444203[5] = -nom_x[5] + true_x[5]; + out_945533236592444203[6] = -nom_x[6] + true_x[6]; + out_945533236592444203[7] = -nom_x[7] + true_x[7]; + out_945533236592444203[8] = -nom_x[8] + true_x[8]; } -void H_mod_fun(double *state, double *out_5279329364050306118) { - out_5279329364050306118[0] = 1.0; - out_5279329364050306118[1] = 0.0; - out_5279329364050306118[2] = 0.0; - out_5279329364050306118[3] = 0.0; - out_5279329364050306118[4] = 0.0; - out_5279329364050306118[5] = 0.0; - out_5279329364050306118[6] = 0.0; - out_5279329364050306118[7] = 0.0; - out_5279329364050306118[8] = 0.0; - out_5279329364050306118[9] = 0.0; - out_5279329364050306118[10] = 1.0; - out_5279329364050306118[11] = 0.0; - out_5279329364050306118[12] = 0.0; - out_5279329364050306118[13] = 0.0; - out_5279329364050306118[14] = 0.0; - out_5279329364050306118[15] = 0.0; - out_5279329364050306118[16] = 0.0; - out_5279329364050306118[17] = 0.0; - out_5279329364050306118[18] = 0.0; - out_5279329364050306118[19] = 0.0; - out_5279329364050306118[20] = 1.0; - out_5279329364050306118[21] = 0.0; - out_5279329364050306118[22] = 0.0; - out_5279329364050306118[23] = 0.0; - out_5279329364050306118[24] = 0.0; - out_5279329364050306118[25] = 0.0; - out_5279329364050306118[26] = 0.0; - out_5279329364050306118[27] = 0.0; - out_5279329364050306118[28] = 0.0; - out_5279329364050306118[29] = 0.0; - out_5279329364050306118[30] = 1.0; - out_5279329364050306118[31] = 0.0; - out_5279329364050306118[32] = 0.0; - out_5279329364050306118[33] = 0.0; - out_5279329364050306118[34] = 0.0; - out_5279329364050306118[35] = 0.0; - out_5279329364050306118[36] = 0.0; - out_5279329364050306118[37] = 0.0; - out_5279329364050306118[38] = 0.0; - out_5279329364050306118[39] = 0.0; - out_5279329364050306118[40] = 1.0; - out_5279329364050306118[41] = 0.0; - out_5279329364050306118[42] = 0.0; - out_5279329364050306118[43] = 0.0; - out_5279329364050306118[44] = 0.0; - out_5279329364050306118[45] = 0.0; - out_5279329364050306118[46] = 0.0; - out_5279329364050306118[47] = 0.0; - out_5279329364050306118[48] = 0.0; - out_5279329364050306118[49] = 0.0; - out_5279329364050306118[50] = 1.0; - out_5279329364050306118[51] = 0.0; - out_5279329364050306118[52] = 0.0; - out_5279329364050306118[53] = 0.0; - out_5279329364050306118[54] = 0.0; - out_5279329364050306118[55] = 0.0; - out_5279329364050306118[56] = 0.0; - out_5279329364050306118[57] = 0.0; - out_5279329364050306118[58] = 0.0; - out_5279329364050306118[59] = 0.0; - out_5279329364050306118[60] = 1.0; - out_5279329364050306118[61] = 0.0; - out_5279329364050306118[62] = 0.0; - out_5279329364050306118[63] = 0.0; - out_5279329364050306118[64] = 0.0; - out_5279329364050306118[65] = 0.0; - out_5279329364050306118[66] = 0.0; - out_5279329364050306118[67] = 0.0; - out_5279329364050306118[68] = 0.0; - out_5279329364050306118[69] = 0.0; - out_5279329364050306118[70] = 1.0; - out_5279329364050306118[71] = 0.0; - out_5279329364050306118[72] = 0.0; - out_5279329364050306118[73] = 0.0; - out_5279329364050306118[74] = 0.0; - out_5279329364050306118[75] = 0.0; - out_5279329364050306118[76] = 0.0; - out_5279329364050306118[77] = 0.0; - out_5279329364050306118[78] = 0.0; - out_5279329364050306118[79] = 0.0; - out_5279329364050306118[80] = 1.0; +void H_mod_fun(double *state, double *out_2778542718740683729) { + out_2778542718740683729[0] = 1.0; + out_2778542718740683729[1] = 0.0; + out_2778542718740683729[2] = 0.0; + out_2778542718740683729[3] = 0.0; + out_2778542718740683729[4] = 0.0; + out_2778542718740683729[5] = 0.0; + out_2778542718740683729[6] = 0.0; + out_2778542718740683729[7] = 0.0; + out_2778542718740683729[8] = 0.0; + out_2778542718740683729[9] = 0.0; + out_2778542718740683729[10] = 1.0; + out_2778542718740683729[11] = 0.0; + out_2778542718740683729[12] = 0.0; + out_2778542718740683729[13] = 0.0; + out_2778542718740683729[14] = 0.0; + out_2778542718740683729[15] = 0.0; + out_2778542718740683729[16] = 0.0; + out_2778542718740683729[17] = 0.0; + out_2778542718740683729[18] = 0.0; + out_2778542718740683729[19] = 0.0; + out_2778542718740683729[20] = 1.0; + out_2778542718740683729[21] = 0.0; + out_2778542718740683729[22] = 0.0; + out_2778542718740683729[23] = 0.0; + out_2778542718740683729[24] = 0.0; + out_2778542718740683729[25] = 0.0; + out_2778542718740683729[26] = 0.0; + out_2778542718740683729[27] = 0.0; + out_2778542718740683729[28] = 0.0; + out_2778542718740683729[29] = 0.0; + out_2778542718740683729[30] = 1.0; + out_2778542718740683729[31] = 0.0; + out_2778542718740683729[32] = 0.0; + out_2778542718740683729[33] = 0.0; + out_2778542718740683729[34] = 0.0; + out_2778542718740683729[35] = 0.0; + out_2778542718740683729[36] = 0.0; + out_2778542718740683729[37] = 0.0; + out_2778542718740683729[38] = 0.0; + out_2778542718740683729[39] = 0.0; + out_2778542718740683729[40] = 1.0; + out_2778542718740683729[41] = 0.0; + out_2778542718740683729[42] = 0.0; + out_2778542718740683729[43] = 0.0; + out_2778542718740683729[44] = 0.0; + out_2778542718740683729[45] = 0.0; + out_2778542718740683729[46] = 0.0; + out_2778542718740683729[47] = 0.0; + out_2778542718740683729[48] = 0.0; + out_2778542718740683729[49] = 0.0; + out_2778542718740683729[50] = 1.0; + out_2778542718740683729[51] = 0.0; + out_2778542718740683729[52] = 0.0; + out_2778542718740683729[53] = 0.0; + out_2778542718740683729[54] = 0.0; + out_2778542718740683729[55] = 0.0; + out_2778542718740683729[56] = 0.0; + out_2778542718740683729[57] = 0.0; + out_2778542718740683729[58] = 0.0; + out_2778542718740683729[59] = 0.0; + out_2778542718740683729[60] = 1.0; + out_2778542718740683729[61] = 0.0; + out_2778542718740683729[62] = 0.0; + out_2778542718740683729[63] = 0.0; + out_2778542718740683729[64] = 0.0; + out_2778542718740683729[65] = 0.0; + out_2778542718740683729[66] = 0.0; + out_2778542718740683729[67] = 0.0; + out_2778542718740683729[68] = 0.0; + out_2778542718740683729[69] = 0.0; + out_2778542718740683729[70] = 1.0; + out_2778542718740683729[71] = 0.0; + out_2778542718740683729[72] = 0.0; + out_2778542718740683729[73] = 0.0; + out_2778542718740683729[74] = 0.0; + out_2778542718740683729[75] = 0.0; + out_2778542718740683729[76] = 0.0; + out_2778542718740683729[77] = 0.0; + out_2778542718740683729[78] = 0.0; + out_2778542718740683729[79] = 0.0; + out_2778542718740683729[80] = 1.0; } -void f_fun(double *state, double dt, double *out_9065464123133416094) { - out_9065464123133416094[0] = state[0]; - out_9065464123133416094[1] = state[1]; - out_9065464123133416094[2] = state[2]; - out_9065464123133416094[3] = state[3]; - out_9065464123133416094[4] = state[4]; - out_9065464123133416094[5] = dt*((-state[4] + (-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])/(mass*state[4]))*state[6] - 9.8100000000000005*state[8] + stiffness_front*(-state[2] - state[3] + state[7])*state[0]/(mass*state[1]) + (-stiffness_front*state[0] - stiffness_rear*state[0])*state[5]/(mass*state[4])) + state[5]; - out_9065464123133416094[6] = dt*(center_to_front*stiffness_front*(-state[2] - state[3] + state[7])*state[0]/(rotational_inertia*state[1]) + (-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])*state[5]/(rotational_inertia*state[4]) + (-pow(center_to_front, 2)*stiffness_front*state[0] - pow(center_to_rear, 2)*stiffness_rear*state[0])*state[6]/(rotational_inertia*state[4])) + state[6]; - out_9065464123133416094[7] = state[7]; - out_9065464123133416094[8] = state[8]; +void f_fun(double *state, double dt, double *out_3017733201534411708) { + out_3017733201534411708[0] = state[0]; + out_3017733201534411708[1] = state[1]; + out_3017733201534411708[2] = state[2]; + out_3017733201534411708[3] = state[3]; + out_3017733201534411708[4] = state[4]; + out_3017733201534411708[5] = dt*((-state[4] + (-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])/(mass*state[4]))*state[6] - 9.8100000000000005*state[8] + stiffness_front*(-state[2] - state[3] + state[7])*state[0]/(mass*state[1]) + (-stiffness_front*state[0] - stiffness_rear*state[0])*state[5]/(mass*state[4])) + state[5]; + out_3017733201534411708[6] = dt*(center_to_front*stiffness_front*(-state[2] - state[3] + state[7])*state[0]/(rotational_inertia*state[1]) + (-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])*state[5]/(rotational_inertia*state[4]) + (-pow(center_to_front, 2)*stiffness_front*state[0] - pow(center_to_rear, 2)*stiffness_rear*state[0])*state[6]/(rotational_inertia*state[4])) + state[6]; + out_3017733201534411708[7] = state[7]; + out_3017733201534411708[8] = state[8]; } -void F_fun(double *state, double dt, double *out_4008021677178468012) { - out_4008021677178468012[0] = 1; - out_4008021677178468012[1] = 0; - out_4008021677178468012[2] = 0; - out_4008021677178468012[3] = 0; - out_4008021677178468012[4] = 0; - out_4008021677178468012[5] = 0; - out_4008021677178468012[6] = 0; - out_4008021677178468012[7] = 0; - out_4008021677178468012[8] = 0; - out_4008021677178468012[9] = 0; - out_4008021677178468012[10] = 1; - out_4008021677178468012[11] = 0; - out_4008021677178468012[12] = 0; - out_4008021677178468012[13] = 0; - out_4008021677178468012[14] = 0; - out_4008021677178468012[15] = 0; - out_4008021677178468012[16] = 0; - out_4008021677178468012[17] = 0; - out_4008021677178468012[18] = 0; - out_4008021677178468012[19] = 0; - out_4008021677178468012[20] = 1; - out_4008021677178468012[21] = 0; - out_4008021677178468012[22] = 0; - out_4008021677178468012[23] = 0; - out_4008021677178468012[24] = 0; - out_4008021677178468012[25] = 0; - out_4008021677178468012[26] = 0; - out_4008021677178468012[27] = 0; - out_4008021677178468012[28] = 0; - out_4008021677178468012[29] = 0; - out_4008021677178468012[30] = 1; - out_4008021677178468012[31] = 0; - out_4008021677178468012[32] = 0; - out_4008021677178468012[33] = 0; - out_4008021677178468012[34] = 0; - out_4008021677178468012[35] = 0; - out_4008021677178468012[36] = 0; - out_4008021677178468012[37] = 0; - out_4008021677178468012[38] = 0; - out_4008021677178468012[39] = 0; - out_4008021677178468012[40] = 1; - out_4008021677178468012[41] = 0; - out_4008021677178468012[42] = 0; - out_4008021677178468012[43] = 0; - out_4008021677178468012[44] = 0; - out_4008021677178468012[45] = dt*(stiffness_front*(-state[2] - state[3] + state[7])/(mass*state[1]) + (-stiffness_front - stiffness_rear)*state[5]/(mass*state[4]) + (-center_to_front*stiffness_front + center_to_rear*stiffness_rear)*state[6]/(mass*state[4])); - out_4008021677178468012[46] = -dt*stiffness_front*(-state[2] - state[3] + state[7])*state[0]/(mass*pow(state[1], 2)); - out_4008021677178468012[47] = -dt*stiffness_front*state[0]/(mass*state[1]); - out_4008021677178468012[48] = -dt*stiffness_front*state[0]/(mass*state[1]); - out_4008021677178468012[49] = dt*((-1 - (-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])/(mass*pow(state[4], 2)))*state[6] - (-stiffness_front*state[0] - stiffness_rear*state[0])*state[5]/(mass*pow(state[4], 2))); - out_4008021677178468012[50] = dt*(-stiffness_front*state[0] - stiffness_rear*state[0])/(mass*state[4]) + 1; - out_4008021677178468012[51] = dt*(-state[4] + (-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])/(mass*state[4])); - out_4008021677178468012[52] = dt*stiffness_front*state[0]/(mass*state[1]); - out_4008021677178468012[53] = -9.8100000000000005*dt; - out_4008021677178468012[54] = dt*(center_to_front*stiffness_front*(-state[2] - state[3] + state[7])/(rotational_inertia*state[1]) + (-center_to_front*stiffness_front + center_to_rear*stiffness_rear)*state[5]/(rotational_inertia*state[4]) + (-pow(center_to_front, 2)*stiffness_front - pow(center_to_rear, 2)*stiffness_rear)*state[6]/(rotational_inertia*state[4])); - out_4008021677178468012[55] = -center_to_front*dt*stiffness_front*(-state[2] - state[3] + state[7])*state[0]/(rotational_inertia*pow(state[1], 2)); - out_4008021677178468012[56] = -center_to_front*dt*stiffness_front*state[0]/(rotational_inertia*state[1]); - out_4008021677178468012[57] = -center_to_front*dt*stiffness_front*state[0]/(rotational_inertia*state[1]); - out_4008021677178468012[58] = dt*(-(-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])*state[5]/(rotational_inertia*pow(state[4], 2)) - (-pow(center_to_front, 2)*stiffness_front*state[0] - pow(center_to_rear, 2)*stiffness_rear*state[0])*state[6]/(rotational_inertia*pow(state[4], 2))); - out_4008021677178468012[59] = dt*(-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])/(rotational_inertia*state[4]); - out_4008021677178468012[60] = dt*(-pow(center_to_front, 2)*stiffness_front*state[0] - pow(center_to_rear, 2)*stiffness_rear*state[0])/(rotational_inertia*state[4]) + 1; - out_4008021677178468012[61] = center_to_front*dt*stiffness_front*state[0]/(rotational_inertia*state[1]); - out_4008021677178468012[62] = 0; - out_4008021677178468012[63] = 0; - out_4008021677178468012[64] = 0; - out_4008021677178468012[65] = 0; - out_4008021677178468012[66] = 0; - out_4008021677178468012[67] = 0; - out_4008021677178468012[68] = 0; - out_4008021677178468012[69] = 0; - out_4008021677178468012[70] = 1; - out_4008021677178468012[71] = 0; - out_4008021677178468012[72] = 0; - out_4008021677178468012[73] = 0; - out_4008021677178468012[74] = 0; - out_4008021677178468012[75] = 0; - out_4008021677178468012[76] = 0; - out_4008021677178468012[77] = 0; - out_4008021677178468012[78] = 0; - out_4008021677178468012[79] = 0; - out_4008021677178468012[80] = 1; +void F_fun(double *state, double dt, double *out_9105766054919985506) { + out_9105766054919985506[0] = 1; + out_9105766054919985506[1] = 0; + out_9105766054919985506[2] = 0; + out_9105766054919985506[3] = 0; + out_9105766054919985506[4] = 0; + out_9105766054919985506[5] = 0; + out_9105766054919985506[6] = 0; + out_9105766054919985506[7] = 0; + out_9105766054919985506[8] = 0; + out_9105766054919985506[9] = 0; + out_9105766054919985506[10] = 1; + out_9105766054919985506[11] = 0; + out_9105766054919985506[12] = 0; + out_9105766054919985506[13] = 0; + out_9105766054919985506[14] = 0; + out_9105766054919985506[15] = 0; + out_9105766054919985506[16] = 0; + out_9105766054919985506[17] = 0; + out_9105766054919985506[18] = 0; + out_9105766054919985506[19] = 0; + out_9105766054919985506[20] = 1; + out_9105766054919985506[21] = 0; + out_9105766054919985506[22] = 0; + out_9105766054919985506[23] = 0; + out_9105766054919985506[24] = 0; + out_9105766054919985506[25] = 0; + out_9105766054919985506[26] = 0; + out_9105766054919985506[27] = 0; + out_9105766054919985506[28] = 0; + out_9105766054919985506[29] = 0; + out_9105766054919985506[30] = 1; + out_9105766054919985506[31] = 0; + out_9105766054919985506[32] = 0; + out_9105766054919985506[33] = 0; + out_9105766054919985506[34] = 0; + out_9105766054919985506[35] = 0; + out_9105766054919985506[36] = 0; + out_9105766054919985506[37] = 0; + out_9105766054919985506[38] = 0; + out_9105766054919985506[39] = 0; + out_9105766054919985506[40] = 1; + out_9105766054919985506[41] = 0; + out_9105766054919985506[42] = 0; + out_9105766054919985506[43] = 0; + out_9105766054919985506[44] = 0; + out_9105766054919985506[45] = dt*(stiffness_front*(-state[2] - state[3] + state[7])/(mass*state[1]) + (-stiffness_front - stiffness_rear)*state[5]/(mass*state[4]) + (-center_to_front*stiffness_front + center_to_rear*stiffness_rear)*state[6]/(mass*state[4])); + out_9105766054919985506[46] = -dt*stiffness_front*(-state[2] - state[3] + state[7])*state[0]/(mass*pow(state[1], 2)); + out_9105766054919985506[47] = -dt*stiffness_front*state[0]/(mass*state[1]); + out_9105766054919985506[48] = -dt*stiffness_front*state[0]/(mass*state[1]); + out_9105766054919985506[49] = dt*((-1 - (-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])/(mass*pow(state[4], 2)))*state[6] - (-stiffness_front*state[0] - stiffness_rear*state[0])*state[5]/(mass*pow(state[4], 2))); + out_9105766054919985506[50] = dt*(-stiffness_front*state[0] - stiffness_rear*state[0])/(mass*state[4]) + 1; + out_9105766054919985506[51] = dt*(-state[4] + (-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])/(mass*state[4])); + out_9105766054919985506[52] = dt*stiffness_front*state[0]/(mass*state[1]); + out_9105766054919985506[53] = -9.8100000000000005*dt; + out_9105766054919985506[54] = dt*(center_to_front*stiffness_front*(-state[2] - state[3] + state[7])/(rotational_inertia*state[1]) + (-center_to_front*stiffness_front + center_to_rear*stiffness_rear)*state[5]/(rotational_inertia*state[4]) + (-pow(center_to_front, 2)*stiffness_front - pow(center_to_rear, 2)*stiffness_rear)*state[6]/(rotational_inertia*state[4])); + out_9105766054919985506[55] = -center_to_front*dt*stiffness_front*(-state[2] - state[3] + state[7])*state[0]/(rotational_inertia*pow(state[1], 2)); + out_9105766054919985506[56] = -center_to_front*dt*stiffness_front*state[0]/(rotational_inertia*state[1]); + out_9105766054919985506[57] = -center_to_front*dt*stiffness_front*state[0]/(rotational_inertia*state[1]); + out_9105766054919985506[58] = dt*(-(-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])*state[5]/(rotational_inertia*pow(state[4], 2)) - (-pow(center_to_front, 2)*stiffness_front*state[0] - pow(center_to_rear, 2)*stiffness_rear*state[0])*state[6]/(rotational_inertia*pow(state[4], 2))); + out_9105766054919985506[59] = dt*(-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])/(rotational_inertia*state[4]); + out_9105766054919985506[60] = dt*(-pow(center_to_front, 2)*stiffness_front*state[0] - pow(center_to_rear, 2)*stiffness_rear*state[0])/(rotational_inertia*state[4]) + 1; + out_9105766054919985506[61] = center_to_front*dt*stiffness_front*state[0]/(rotational_inertia*state[1]); + out_9105766054919985506[62] = 0; + out_9105766054919985506[63] = 0; + out_9105766054919985506[64] = 0; + out_9105766054919985506[65] = 0; + out_9105766054919985506[66] = 0; + out_9105766054919985506[67] = 0; + out_9105766054919985506[68] = 0; + out_9105766054919985506[69] = 0; + out_9105766054919985506[70] = 1; + out_9105766054919985506[71] = 0; + out_9105766054919985506[72] = 0; + out_9105766054919985506[73] = 0; + out_9105766054919985506[74] = 0; + out_9105766054919985506[75] = 0; + out_9105766054919985506[76] = 0; + out_9105766054919985506[77] = 0; + out_9105766054919985506[78] = 0; + out_9105766054919985506[79] = 0; + out_9105766054919985506[80] = 1; } -void h_25(double *state, double *unused, double *out_5404965656887369328) { - out_5404965656887369328[0] = state[6]; +void h_25(double *state, double *unused, double *out_614805040009735499) { + out_614805040009735499[0] = state[6]; } -void H_25(double *state, double *unused, double *out_5246076676685385693) { - out_5246076676685385693[0] = 0; - out_5246076676685385693[1] = 0; - out_5246076676685385693[2] = 0; - out_5246076676685385693[3] = 0; - out_5246076676685385693[4] = 0; - out_5246076676685385693[5] = 0; - out_5246076676685385693[6] = 1; - out_5246076676685385693[7] = 0; - out_5246076676685385693[8] = 0; +void H_25(double *state, double *unused, double *out_2273208276540387017) { + out_2273208276540387017[0] = 0; + out_2273208276540387017[1] = 0; + out_2273208276540387017[2] = 0; + out_2273208276540387017[3] = 0; + out_2273208276540387017[4] = 0; + out_2273208276540387017[5] = 0; + out_2273208276540387017[6] = 1; + out_2273208276540387017[7] = 0; + out_2273208276540387017[8] = 0; } -void h_24(double *state, double *unused, double *out_1243581068366124229) { - out_1243581068366124229[0] = state[4]; - out_1243581068366124229[1] = state[5]; +void h_24(double *state, double *unused, double *out_217533166938587881) { + out_217533166938587881[0] = state[4]; + out_217533166938587881[1] = state[5]; } -void H_24(double *state, double *unused, double *out_1688151077883062557) { - out_1688151077883062557[0] = 0; - out_1688151077883062557[1] = 0; - out_1688151077883062557[2] = 0; - out_1688151077883062557[3] = 0; - out_1688151077883062557[4] = 1; - out_1688151077883062557[5] = 0; - out_1688151077883062557[6] = 0; - out_1688151077883062557[7] = 0; - out_1688151077883062557[8] = 0; - out_1688151077883062557[9] = 0; - out_1688151077883062557[10] = 0; - out_1688151077883062557[11] = 0; - out_1688151077883062557[12] = 0; - out_1688151077883062557[13] = 0; - out_1688151077883062557[14] = 1; - out_1688151077883062557[15] = 0; - out_1688151077883062557[16] = 0; - out_1688151077883062557[17] = 0; +void H_24(double *state, double *unused, double *out_1728503802090121616) { + out_1728503802090121616[0] = 0; + out_1728503802090121616[1] = 0; + out_1728503802090121616[2] = 0; + out_1728503802090121616[3] = 0; + out_1728503802090121616[4] = 1; + out_1728503802090121616[5] = 0; + out_1728503802090121616[6] = 0; + out_1728503802090121616[7] = 0; + out_1728503802090121616[8] = 0; + out_1728503802090121616[9] = 0; + out_1728503802090121616[10] = 0; + out_1728503802090121616[11] = 0; + out_1728503802090121616[12] = 0; + out_1728503802090121616[13] = 0; + out_1728503802090121616[14] = 1; + out_1728503802090121616[15] = 0; + out_1728503802090121616[16] = 0; + out_1728503802090121616[17] = 0; } -void h_30(double *state, double *unused, double *out_4545117735558442296) { - out_4545117735558442296[0] = state[4]; +void h_30(double *state, double *unused, double *out_13386882396371945) { + out_13386882396371945[0] = state[4]; } -void H_30(double *state, double *unused, double *out_8672971066896557725) { - out_8672971066896557725[0] = 0; - out_8672971066896557725[1] = 0; - out_8672971066896557725[2] = 0; - out_8672971066896557725[3] = 0; - out_8672971066896557725[4] = 1; - out_8672971066896557725[5] = 0; - out_8672971066896557725[6] = 0; - out_8672971066896557725[7] = 0; - out_8672971066896557725[8] = 0; +void H_30(double *state, double *unused, double *out_4643482064951229738) { + out_4643482064951229738[0] = 0; + out_4643482064951229738[1] = 0; + out_4643482064951229738[2] = 0; + out_4643482064951229738[3] = 0; + out_4643482064951229738[4] = 1; + out_4643482064951229738[5] = 0; + out_4643482064951229738[6] = 0; + out_4643482064951229738[7] = 0; + out_4643482064951229738[8] = 0; } -void h_26(double *state, double *unused, double *out_456555532102403349) { - out_456555532102403349[0] = state[7]; +void h_26(double *state, double *unused, double *out_4988286385264473700) { + out_4988286385264473700[0] = state[7]; } -void H_26(double *state, double *unused, double *out_8987579995559441917) { - out_8987579995559441917[0] = 0; - out_8987579995559441917[1] = 0; - out_8987579995559441917[2] = 0; - out_8987579995559441917[3] = 0; - out_8987579995559441917[4] = 0; - out_8987579995559441917[5] = 0; - out_8987579995559441917[6] = 0; - out_8987579995559441917[7] = 1; - out_8987579995559441917[8] = 0; +void H_26(double *state, double *unused, double *out_6014711595414443241) { + out_6014711595414443241[0] = 0; + out_6014711595414443241[1] = 0; + out_6014711595414443241[2] = 0; + out_6014711595414443241[3] = 0; + out_6014711595414443241[4] = 0; + out_6014711595414443241[5] = 0; + out_6014711595414443241[6] = 0; + out_6014711595414443241[7] = 1; + out_6014711595414443241[8] = 0; } -void h_27(double *state, double *unused, double *out_338548138169026605) { - out_338548138169026605[0] = state[3]; +void h_27(double *state, double *unused, double *out_5616478307670581144) { + out_5616478307670581144[0] = state[3]; } -void H_27(double *state, double *unused, double *out_6498207755096132814) { - out_6498207755096132814[0] = 0; - out_6498207755096132814[1] = 0; - out_6498207755096132814[2] = 0; - out_6498207755096132814[3] = 1; - out_6498207755096132814[4] = 0; - out_6498207755096132814[5] = 0; - out_6498207755096132814[6] = 0; - out_6498207755096132814[7] = 0; - out_6498207755096132814[8] = 0; +void H_27(double *state, double *unused, double *out_2468718753150804827) { + out_2468718753150804827[0] = 0; + out_2468718753150804827[1] = 0; + out_2468718753150804827[2] = 0; + out_2468718753150804827[3] = 1; + out_2468718753150804827[4] = 0; + out_2468718753150804827[5] = 0; + out_2468718753150804827[6] = 0; + out_2468718753150804827[7] = 0; + out_2468718753150804827[8] = 0; } -void h_29(double *state, double *unused, double *out_3601607882656779861) { - out_3601607882656779861[0] = state[1]; +void h_29(double *state, double *unused, double *out_8968582289610468820) { + out_8968582289610468820[0] = state[1]; } -void H_29(double *state, double *unused, double *out_9183202411210949909) { - out_9183202411210949909[0] = 0; - out_9183202411210949909[1] = 1; - out_9183202411210949909[2] = 0; - out_9183202411210949909[3] = 0; - out_9183202411210949909[4] = 0; - out_9183202411210949909[5] = 0; - out_9183202411210949909[6] = 0; - out_9183202411210949909[7] = 0; - out_9183202411210949909[8] = 0; +void H_29(double *state, double *unused, double *out_5153713409265621922) { + out_5153713409265621922[0] = 0; + out_5153713409265621922[1] = 1; + out_5153713409265621922[2] = 0; + out_5153713409265621922[3] = 0; + out_5153713409265621922[4] = 0; + out_5153713409265621922[5] = 0; + out_5153713409265621922[6] = 0; + out_5153713409265621922[7] = 0; + out_5153713409265621922[8] = 0; } -void h_28(double *state, double *unused, double *out_8457761326096970535) { - out_8457761326096970535[0] = state[0]; +void h_28(double *state, double *unused, double *out_7604358550203645525) { + out_7604358550203645525[0] = state[0]; } -void H_28(double *state, double *unused, double *out_4100803394141419335) { - out_4100803394141419335[0] = 1; - out_4100803394141419335[1] = 0; - out_4100803394141419335[2] = 0; - out_4100803394141419335[3] = 0; - out_4100803394141419335[4] = 0; - out_4100803394141419335[5] = 0; - out_4100803394141419335[6] = 0; - out_4100803394141419335[7] = 0; - out_4100803394141419335[8] = 0; +void H_28(double *state, double *unused, double *out_71314392196091348) { + out_71314392196091348[0] = 1; + out_71314392196091348[1] = 0; + out_71314392196091348[2] = 0; + out_71314392196091348[3] = 0; + out_71314392196091348[4] = 0; + out_71314392196091348[5] = 0; + out_71314392196091348[6] = 0; + out_71314392196091348[7] = 0; + out_71314392196091348[8] = 0; } -void h_31(double *state, double *unused, double *out_1509086364917783500) { - out_1509086364917783500[0] = state[8]; +void h_31(double *state, double *unused, double *out_3022644488244286851) { + out_3022644488244286851[0] = state[8]; } -void H_31(double *state, double *unused, double *out_8832955975916758223) { - out_8832955975916758223[0] = 0; - out_8832955975916758223[1] = 0; - out_8832955975916758223[2] = 0; - out_8832955975916758223[3] = 0; - out_8832955975916758223[4] = 0; - out_8832955975916758223[5] = 0; - out_8832955975916758223[6] = 0; - out_8832955975916758223[7] = 0; - out_8832955975916758223[8] = 1; +void H_31(double *state, double *unused, double *out_2242562314663426589) { + out_2242562314663426589[0] = 0; + out_2242562314663426589[1] = 0; + out_2242562314663426589[2] = 0; + out_2242562314663426589[3] = 0; + out_2242562314663426589[4] = 0; + out_2242562314663426589[5] = 0; + out_2242562314663426589[6] = 0; + out_2242562314663426589[7] = 0; + out_2242562314663426589[8] = 1; } #include #include @@ -518,68 +518,68 @@ void car_update_28(double *in_x, double *in_P, double *in_z, double *in_R, doubl void car_update_31(double *in_x, double *in_P, double *in_z, double *in_R, double *in_ea) { update<1, 3, 0>(in_x, in_P, h_31, H_31, NULL, in_z, in_R, in_ea, MAHA_THRESH_31); } -void car_err_fun(double *nom_x, double *delta_x, double *out_8771745385019272911) { - err_fun(nom_x, delta_x, out_8771745385019272911); +void car_err_fun(double *nom_x, double *delta_x, double *out_7126582961958922662) { + err_fun(nom_x, delta_x, out_7126582961958922662); } -void car_inv_err_fun(double *nom_x, double *true_x, double *out_3231363094273967832) { - inv_err_fun(nom_x, true_x, out_3231363094273967832); +void car_inv_err_fun(double *nom_x, double *true_x, double *out_945533236592444203) { + inv_err_fun(nom_x, true_x, out_945533236592444203); } -void car_H_mod_fun(double *state, double *out_5279329364050306118) { - H_mod_fun(state, out_5279329364050306118); +void car_H_mod_fun(double *state, double *out_2778542718740683729) { + H_mod_fun(state, out_2778542718740683729); } -void car_f_fun(double *state, double dt, double *out_9065464123133416094) { - f_fun(state, dt, out_9065464123133416094); +void car_f_fun(double *state, double dt, double *out_3017733201534411708) { + f_fun(state, dt, out_3017733201534411708); } -void car_F_fun(double *state, double dt, double *out_4008021677178468012) { - F_fun(state, dt, out_4008021677178468012); +void car_F_fun(double *state, double dt, double *out_9105766054919985506) { + F_fun(state, dt, out_9105766054919985506); } -void car_h_25(double *state, double *unused, double *out_5404965656887369328) { - h_25(state, unused, out_5404965656887369328); +void car_h_25(double *state, double *unused, double *out_614805040009735499) { + h_25(state, unused, out_614805040009735499); } -void car_H_25(double *state, double *unused, double *out_5246076676685385693) { - H_25(state, unused, out_5246076676685385693); +void car_H_25(double *state, double *unused, double *out_2273208276540387017) { + H_25(state, unused, out_2273208276540387017); } -void car_h_24(double *state, double *unused, double *out_1243581068366124229) { - h_24(state, unused, out_1243581068366124229); +void car_h_24(double *state, double *unused, double *out_217533166938587881) { + h_24(state, unused, out_217533166938587881); } -void car_H_24(double *state, double *unused, double *out_1688151077883062557) { - H_24(state, unused, out_1688151077883062557); +void car_H_24(double *state, double *unused, double *out_1728503802090121616) { + H_24(state, unused, out_1728503802090121616); } -void car_h_30(double *state, double *unused, double *out_4545117735558442296) { - h_30(state, unused, out_4545117735558442296); +void car_h_30(double *state, double *unused, double *out_13386882396371945) { + h_30(state, unused, out_13386882396371945); } -void car_H_30(double *state, double *unused, double *out_8672971066896557725) { - H_30(state, unused, out_8672971066896557725); +void car_H_30(double *state, double *unused, double *out_4643482064951229738) { + H_30(state, unused, out_4643482064951229738); } -void car_h_26(double *state, double *unused, double *out_456555532102403349) { - h_26(state, unused, out_456555532102403349); +void car_h_26(double *state, double *unused, double *out_4988286385264473700) { + h_26(state, unused, out_4988286385264473700); } -void car_H_26(double *state, double *unused, double *out_8987579995559441917) { - H_26(state, unused, out_8987579995559441917); +void car_H_26(double *state, double *unused, double *out_6014711595414443241) { + H_26(state, unused, out_6014711595414443241); } -void car_h_27(double *state, double *unused, double *out_338548138169026605) { - h_27(state, unused, out_338548138169026605); +void car_h_27(double *state, double *unused, double *out_5616478307670581144) { + h_27(state, unused, out_5616478307670581144); } -void car_H_27(double *state, double *unused, double *out_6498207755096132814) { - H_27(state, unused, out_6498207755096132814); +void car_H_27(double *state, double *unused, double *out_2468718753150804827) { + H_27(state, unused, out_2468718753150804827); } -void car_h_29(double *state, double *unused, double *out_3601607882656779861) { - h_29(state, unused, out_3601607882656779861); +void car_h_29(double *state, double *unused, double *out_8968582289610468820) { + h_29(state, unused, out_8968582289610468820); } -void car_H_29(double *state, double *unused, double *out_9183202411210949909) { - H_29(state, unused, out_9183202411210949909); +void car_H_29(double *state, double *unused, double *out_5153713409265621922) { + H_29(state, unused, out_5153713409265621922); } -void car_h_28(double *state, double *unused, double *out_8457761326096970535) { - h_28(state, unused, out_8457761326096970535); +void car_h_28(double *state, double *unused, double *out_7604358550203645525) { + h_28(state, unused, out_7604358550203645525); } -void car_H_28(double *state, double *unused, double *out_4100803394141419335) { - H_28(state, unused, out_4100803394141419335); +void car_H_28(double *state, double *unused, double *out_71314392196091348) { + H_28(state, unused, out_71314392196091348); } -void car_h_31(double *state, double *unused, double *out_1509086364917783500) { - h_31(state, unused, out_1509086364917783500); +void car_h_31(double *state, double *unused, double *out_3022644488244286851) { + h_31(state, unused, out_3022644488244286851); } -void car_H_31(double *state, double *unused, double *out_8832955975916758223) { - H_31(state, unused, out_8832955975916758223); +void car_H_31(double *state, double *unused, double *out_2242562314663426589) { + H_31(state, unused, out_2242562314663426589); } void car_predict(double *in_x, double *in_P, double *in_Q, double dt) { predict(in_x, in_P, in_Q, dt); diff --git a/openpilot/selfdrive/locationd/models/generated/car.h b/openpilot/selfdrive/locationd/models/generated/car.h index b3c227e273..3b0dde3047 100644 --- a/openpilot/selfdrive/locationd/models/generated/car.h +++ b/openpilot/selfdrive/locationd/models/generated/car.h @@ -9,27 +9,27 @@ void car_update_27(double *in_x, double *in_P, double *in_z, double *in_R, doubl void car_update_29(double *in_x, double *in_P, double *in_z, double *in_R, double *in_ea); void car_update_28(double *in_x, double *in_P, double *in_z, double *in_R, double *in_ea); void car_update_31(double *in_x, double *in_P, double *in_z, double *in_R, double *in_ea); -void car_err_fun(double *nom_x, double *delta_x, double *out_8771745385019272911); -void car_inv_err_fun(double *nom_x, double *true_x, double *out_3231363094273967832); -void car_H_mod_fun(double *state, double *out_5279329364050306118); -void car_f_fun(double *state, double dt, double *out_9065464123133416094); -void car_F_fun(double *state, double dt, double *out_4008021677178468012); -void car_h_25(double *state, double *unused, double *out_5404965656887369328); -void car_H_25(double *state, double *unused, double *out_5246076676685385693); -void car_h_24(double *state, double *unused, double *out_1243581068366124229); -void car_H_24(double *state, double *unused, double *out_1688151077883062557); -void car_h_30(double *state, double *unused, double *out_4545117735558442296); -void car_H_30(double *state, double *unused, double *out_8672971066896557725); -void car_h_26(double *state, double *unused, double *out_456555532102403349); -void car_H_26(double *state, double *unused, double *out_8987579995559441917); -void car_h_27(double *state, double *unused, double *out_338548138169026605); -void car_H_27(double *state, double *unused, double *out_6498207755096132814); -void car_h_29(double *state, double *unused, double *out_3601607882656779861); -void car_H_29(double *state, double *unused, double *out_9183202411210949909); -void car_h_28(double *state, double *unused, double *out_8457761326096970535); -void car_H_28(double *state, double *unused, double *out_4100803394141419335); -void car_h_31(double *state, double *unused, double *out_1509086364917783500); -void car_H_31(double *state, double *unused, double *out_8832955975916758223); +void car_err_fun(double *nom_x, double *delta_x, double *out_7126582961958922662); +void car_inv_err_fun(double *nom_x, double *true_x, double *out_945533236592444203); +void car_H_mod_fun(double *state, double *out_2778542718740683729); +void car_f_fun(double *state, double dt, double *out_3017733201534411708); +void car_F_fun(double *state, double dt, double *out_9105766054919985506); +void car_h_25(double *state, double *unused, double *out_614805040009735499); +void car_H_25(double *state, double *unused, double *out_2273208276540387017); +void car_h_24(double *state, double *unused, double *out_217533166938587881); +void car_H_24(double *state, double *unused, double *out_1728503802090121616); +void car_h_30(double *state, double *unused, double *out_13386882396371945); +void car_H_30(double *state, double *unused, double *out_4643482064951229738); +void car_h_26(double *state, double *unused, double *out_4988286385264473700); +void car_H_26(double *state, double *unused, double *out_6014711595414443241); +void car_h_27(double *state, double *unused, double *out_5616478307670581144); +void car_H_27(double *state, double *unused, double *out_2468718753150804827); +void car_h_29(double *state, double *unused, double *out_8968582289610468820); +void car_H_29(double *state, double *unused, double *out_5153713409265621922); +void car_h_28(double *state, double *unused, double *out_7604358550203645525); +void car_H_28(double *state, double *unused, double *out_71314392196091348); +void car_h_31(double *state, double *unused, double *out_3022644488244286851); +void car_H_31(double *state, double *unused, double *out_2242562314663426589); void car_predict(double *in_x, double *in_P, double *in_Q, double dt); void car_set_mass(double x); void car_set_rotational_inertia(double x); diff --git a/openpilot/selfdrive/locationd/models/generated/libcar.so b/openpilot/selfdrive/locationd/models/generated/libcar.so index 83761137f28f2bba51f630b153e1f564b4f1f532..36aaae165e445a91f295d815d6a45056b942bdd8 100755 GIT binary patch delta 16200 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 delta 16293 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 RQ#)!+XkAC$7&=XD`8N;*3ibd1 delta 3104 zcmY+@33L_J9mnyxJm#5%-2?&=vLOUn!mMv*CXb!(S!t zz~-YOWkp5bs%?*5K3{d9^Ww=1y1zg0y^0U#oe?!>gwz57w1kQvZbAYQk%U%gjW%eD zc4&_dxEaYvK}U2#DmtSJ(r^p9q8rkYflOo}8{Kg$dY~tA& zcOQtRCne+s11D$BRh?j9MKG+I!EoU7nPD|O7+4uhn5r6OG{b6EutLqGriUpJH9ay^ z%`E?KPejcqUs$SU24;oTjA3eefazW!DXiM8^${0V;Pqg_K(#ci7KPP928C6ZMXX>r zs+wW7r1@q6_k)o|ff;O8u4b@7b~)QNkIrUvMnugT$`JWm=r6A+D;}=8^W`c(UgUp^ z|M+$=5||ziB!>TQ*{om}x$e;B4Oymnn_M-WD8h)K92KZU6@H3g7>;WE3?ncSqwsUwj?wr9eu**o74E>V zaVN%N9LD1=+>Hsi2NQ8G?!*1~4IaQGOvV&Eh=(v0(=Z(~@Gxd#7G~qOcm$6kiaB@; zb1@I|@jEO)4StV>ScJuR98cg$)Z!^D!P8iZXRr*hvn|Kf49(JQ*U+uHB_#(7>Lwq0 zG%Z%2+gl8(%iQvCySP@IBNnbnwmi#axUL(nD+lX_6FWI-fXIzsYswMFgUNcxbVB^O zmf@L}ZJCA^Ydn`DLdlM1X`ZK9wr+(CH>7hN)6VCJ9vw8-vJK18w2;Hfj-$nD#Q>3= zI%(R}J8aXn9ous}mUTVH40&4YV|ue2F6 zj%`{T((*Jt*1mn{jRhA!gU_Zi~Ayu>5_O%i$WYok2zTB)iR`AW<9rkE#+gvg1XTj7cR zNunyAz1|Zsp-wOKm5K4)8$7Y6XLQ;?UwHzn(K^ppyt^+c9jFdcP;&K#5#k5gadQ(t2GTA-C!{GKfu)iY(;7LIH|Vfe{#kyD%BEu>i~PDz;%4_To62@Ey+KVwAXo>+m54`-+ML zv_e~SKnhZkhHmJG0<1?$fv;pB8$IBn{e=Kz{u76A z0`$ZlOeyx2HYL8Y5mQU~(8^d88?hTFa2i+8Vkkc>%nw8TaYMr zZn>`vK_#j&rabB^6KFhy-h3dlsWsT0t0>EoQT+@v+;R>)hCL&2?4m7`5>~%5DoT diff --git a/openpilot/selfdrive/locationd/models/generated/pose.cpp b/openpilot/selfdrive/locationd/models/generated/pose.cpp index fece4ba57a..fa28a7ca0e 100644 --- a/openpilot/selfdrive/locationd/models/generated/pose.cpp +++ b/openpilot/selfdrive/locationd/models/generated/pose.cpp @@ -17,961 +17,961 @@ const static double MAHA_THRESH_14 = 7.814727903251177; * * * This file is part of 'ekf' * ******************************************************************************/ -void err_fun(double *nom_x, double *delta_x, double *out_4948547112888214127) { - out_4948547112888214127[0] = delta_x[0] + nom_x[0]; - out_4948547112888214127[1] = delta_x[1] + nom_x[1]; - out_4948547112888214127[2] = delta_x[2] + nom_x[2]; - out_4948547112888214127[3] = delta_x[3] + nom_x[3]; - out_4948547112888214127[4] = delta_x[4] + nom_x[4]; - out_4948547112888214127[5] = delta_x[5] + nom_x[5]; - out_4948547112888214127[6] = delta_x[6] + nom_x[6]; - out_4948547112888214127[7] = delta_x[7] + nom_x[7]; - out_4948547112888214127[8] = delta_x[8] + nom_x[8]; - out_4948547112888214127[9] = delta_x[9] + nom_x[9]; - out_4948547112888214127[10] = delta_x[10] + nom_x[10]; - out_4948547112888214127[11] = delta_x[11] + nom_x[11]; - out_4948547112888214127[12] = delta_x[12] + nom_x[12]; - out_4948547112888214127[13] = delta_x[13] + nom_x[13]; - out_4948547112888214127[14] = delta_x[14] + nom_x[14]; - out_4948547112888214127[15] = delta_x[15] + nom_x[15]; - out_4948547112888214127[16] = delta_x[16] + nom_x[16]; - out_4948547112888214127[17] = delta_x[17] + nom_x[17]; +void err_fun(double *nom_x, double *delta_x, double *out_8909220829729456592) { + out_8909220829729456592[0] = delta_x[0] + nom_x[0]; + out_8909220829729456592[1] = delta_x[1] + nom_x[1]; + out_8909220829729456592[2] = delta_x[2] + nom_x[2]; + out_8909220829729456592[3] = delta_x[3] + nom_x[3]; + out_8909220829729456592[4] = delta_x[4] + nom_x[4]; + out_8909220829729456592[5] = delta_x[5] + nom_x[5]; + out_8909220829729456592[6] = delta_x[6] + nom_x[6]; + out_8909220829729456592[7] = delta_x[7] + nom_x[7]; + out_8909220829729456592[8] = delta_x[8] + nom_x[8]; + out_8909220829729456592[9] = delta_x[9] + nom_x[9]; + out_8909220829729456592[10] = delta_x[10] + nom_x[10]; + out_8909220829729456592[11] = delta_x[11] + nom_x[11]; + out_8909220829729456592[12] = delta_x[12] + nom_x[12]; + out_8909220829729456592[13] = delta_x[13] + nom_x[13]; + out_8909220829729456592[14] = delta_x[14] + nom_x[14]; + out_8909220829729456592[15] = delta_x[15] + nom_x[15]; + out_8909220829729456592[16] = delta_x[16] + nom_x[16]; + out_8909220829729456592[17] = delta_x[17] + nom_x[17]; } -void inv_err_fun(double *nom_x, double *true_x, double *out_1637666684293454320) { - out_1637666684293454320[0] = -nom_x[0] + true_x[0]; - out_1637666684293454320[1] = -nom_x[1] + true_x[1]; - out_1637666684293454320[2] = -nom_x[2] + true_x[2]; - out_1637666684293454320[3] = -nom_x[3] + true_x[3]; - out_1637666684293454320[4] = -nom_x[4] + true_x[4]; - out_1637666684293454320[5] = -nom_x[5] + true_x[5]; - out_1637666684293454320[6] = -nom_x[6] + true_x[6]; - out_1637666684293454320[7] = -nom_x[7] + true_x[7]; - out_1637666684293454320[8] = -nom_x[8] + true_x[8]; - out_1637666684293454320[9] = -nom_x[9] + true_x[9]; - out_1637666684293454320[10] = -nom_x[10] + true_x[10]; - out_1637666684293454320[11] = -nom_x[11] + true_x[11]; - out_1637666684293454320[12] = -nom_x[12] + true_x[12]; - out_1637666684293454320[13] = -nom_x[13] + true_x[13]; - out_1637666684293454320[14] = -nom_x[14] + true_x[14]; - out_1637666684293454320[15] = -nom_x[15] + true_x[15]; - out_1637666684293454320[16] = -nom_x[16] + true_x[16]; - out_1637666684293454320[17] = -nom_x[17] + true_x[17]; +void inv_err_fun(double *nom_x, double *true_x, double *out_8068156223905085053) { + out_8068156223905085053[0] = -nom_x[0] + true_x[0]; + out_8068156223905085053[1] = -nom_x[1] + true_x[1]; + out_8068156223905085053[2] = -nom_x[2] + true_x[2]; + out_8068156223905085053[3] = -nom_x[3] + true_x[3]; + out_8068156223905085053[4] = -nom_x[4] + true_x[4]; + out_8068156223905085053[5] = -nom_x[5] + true_x[5]; + out_8068156223905085053[6] = -nom_x[6] + true_x[6]; + out_8068156223905085053[7] = -nom_x[7] + true_x[7]; + out_8068156223905085053[8] = -nom_x[8] + true_x[8]; + out_8068156223905085053[9] = -nom_x[9] + true_x[9]; + out_8068156223905085053[10] = -nom_x[10] + true_x[10]; + out_8068156223905085053[11] = -nom_x[11] + true_x[11]; + out_8068156223905085053[12] = -nom_x[12] + true_x[12]; + out_8068156223905085053[13] = -nom_x[13] + true_x[13]; + out_8068156223905085053[14] = -nom_x[14] + true_x[14]; + out_8068156223905085053[15] = -nom_x[15] + true_x[15]; + out_8068156223905085053[16] = -nom_x[16] + true_x[16]; + out_8068156223905085053[17] = -nom_x[17] + true_x[17]; } -void H_mod_fun(double *state, double *out_2192054780204158214) { - out_2192054780204158214[0] = 1.0; - out_2192054780204158214[1] = 0.0; - out_2192054780204158214[2] = 0.0; - out_2192054780204158214[3] = 0.0; - out_2192054780204158214[4] = 0.0; - out_2192054780204158214[5] = 0.0; - out_2192054780204158214[6] = 0.0; - out_2192054780204158214[7] = 0.0; - out_2192054780204158214[8] = 0.0; - out_2192054780204158214[9] = 0.0; - out_2192054780204158214[10] = 0.0; - out_2192054780204158214[11] = 0.0; - out_2192054780204158214[12] = 0.0; - out_2192054780204158214[13] = 0.0; - out_2192054780204158214[14] = 0.0; - out_2192054780204158214[15] = 0.0; - out_2192054780204158214[16] = 0.0; - out_2192054780204158214[17] = 0.0; - out_2192054780204158214[18] = 0.0; - out_2192054780204158214[19] = 1.0; - out_2192054780204158214[20] = 0.0; - out_2192054780204158214[21] = 0.0; - out_2192054780204158214[22] = 0.0; - out_2192054780204158214[23] = 0.0; - out_2192054780204158214[24] = 0.0; - out_2192054780204158214[25] = 0.0; - out_2192054780204158214[26] = 0.0; - out_2192054780204158214[27] = 0.0; - out_2192054780204158214[28] = 0.0; - out_2192054780204158214[29] = 0.0; - out_2192054780204158214[30] = 0.0; - out_2192054780204158214[31] = 0.0; - out_2192054780204158214[32] = 0.0; - out_2192054780204158214[33] = 0.0; - out_2192054780204158214[34] = 0.0; - out_2192054780204158214[35] = 0.0; - out_2192054780204158214[36] = 0.0; - out_2192054780204158214[37] = 0.0; - out_2192054780204158214[38] = 1.0; - out_2192054780204158214[39] = 0.0; - out_2192054780204158214[40] = 0.0; - out_2192054780204158214[41] = 0.0; - out_2192054780204158214[42] = 0.0; - out_2192054780204158214[43] = 0.0; - out_2192054780204158214[44] = 0.0; - out_2192054780204158214[45] = 0.0; - out_2192054780204158214[46] = 0.0; - out_2192054780204158214[47] = 0.0; - out_2192054780204158214[48] = 0.0; - out_2192054780204158214[49] = 0.0; - out_2192054780204158214[50] = 0.0; - out_2192054780204158214[51] = 0.0; - out_2192054780204158214[52] = 0.0; - out_2192054780204158214[53] = 0.0; - out_2192054780204158214[54] = 0.0; - out_2192054780204158214[55] = 0.0; - out_2192054780204158214[56] = 0.0; - out_2192054780204158214[57] = 1.0; - out_2192054780204158214[58] = 0.0; - out_2192054780204158214[59] = 0.0; - out_2192054780204158214[60] = 0.0; - out_2192054780204158214[61] = 0.0; - out_2192054780204158214[62] = 0.0; - out_2192054780204158214[63] = 0.0; - out_2192054780204158214[64] = 0.0; - out_2192054780204158214[65] = 0.0; - out_2192054780204158214[66] = 0.0; - out_2192054780204158214[67] = 0.0; - out_2192054780204158214[68] = 0.0; - out_2192054780204158214[69] = 0.0; - out_2192054780204158214[70] = 0.0; - out_2192054780204158214[71] = 0.0; - out_2192054780204158214[72] = 0.0; - out_2192054780204158214[73] = 0.0; - out_2192054780204158214[74] = 0.0; - out_2192054780204158214[75] = 0.0; - out_2192054780204158214[76] = 1.0; - out_2192054780204158214[77] = 0.0; - out_2192054780204158214[78] = 0.0; - out_2192054780204158214[79] = 0.0; - out_2192054780204158214[80] = 0.0; - out_2192054780204158214[81] = 0.0; - out_2192054780204158214[82] = 0.0; - out_2192054780204158214[83] = 0.0; - out_2192054780204158214[84] = 0.0; - out_2192054780204158214[85] = 0.0; - out_2192054780204158214[86] = 0.0; - out_2192054780204158214[87] = 0.0; - out_2192054780204158214[88] = 0.0; - out_2192054780204158214[89] = 0.0; - out_2192054780204158214[90] = 0.0; - out_2192054780204158214[91] = 0.0; - out_2192054780204158214[92] = 0.0; - out_2192054780204158214[93] = 0.0; - out_2192054780204158214[94] = 0.0; - out_2192054780204158214[95] = 1.0; - out_2192054780204158214[96] = 0.0; - out_2192054780204158214[97] = 0.0; - out_2192054780204158214[98] = 0.0; - out_2192054780204158214[99] = 0.0; - out_2192054780204158214[100] = 0.0; - out_2192054780204158214[101] = 0.0; - out_2192054780204158214[102] = 0.0; - out_2192054780204158214[103] = 0.0; - out_2192054780204158214[104] = 0.0; - out_2192054780204158214[105] = 0.0; - out_2192054780204158214[106] = 0.0; - out_2192054780204158214[107] = 0.0; - out_2192054780204158214[108] = 0.0; - out_2192054780204158214[109] = 0.0; - out_2192054780204158214[110] = 0.0; - out_2192054780204158214[111] = 0.0; - out_2192054780204158214[112] = 0.0; - out_2192054780204158214[113] = 0.0; - out_2192054780204158214[114] = 1.0; - out_2192054780204158214[115] = 0.0; - out_2192054780204158214[116] = 0.0; - out_2192054780204158214[117] = 0.0; - out_2192054780204158214[118] = 0.0; - out_2192054780204158214[119] = 0.0; - out_2192054780204158214[120] = 0.0; - out_2192054780204158214[121] = 0.0; - out_2192054780204158214[122] = 0.0; - out_2192054780204158214[123] = 0.0; - out_2192054780204158214[124] = 0.0; - out_2192054780204158214[125] = 0.0; - out_2192054780204158214[126] = 0.0; - out_2192054780204158214[127] = 0.0; - out_2192054780204158214[128] = 0.0; - out_2192054780204158214[129] = 0.0; - out_2192054780204158214[130] = 0.0; - out_2192054780204158214[131] = 0.0; - out_2192054780204158214[132] = 0.0; - out_2192054780204158214[133] = 1.0; - out_2192054780204158214[134] = 0.0; - out_2192054780204158214[135] = 0.0; - out_2192054780204158214[136] = 0.0; - out_2192054780204158214[137] = 0.0; - out_2192054780204158214[138] = 0.0; - out_2192054780204158214[139] = 0.0; - out_2192054780204158214[140] = 0.0; - out_2192054780204158214[141] = 0.0; - out_2192054780204158214[142] = 0.0; - out_2192054780204158214[143] = 0.0; - out_2192054780204158214[144] = 0.0; - out_2192054780204158214[145] = 0.0; - out_2192054780204158214[146] = 0.0; - out_2192054780204158214[147] = 0.0; - out_2192054780204158214[148] = 0.0; - out_2192054780204158214[149] = 0.0; - out_2192054780204158214[150] = 0.0; - out_2192054780204158214[151] = 0.0; - out_2192054780204158214[152] = 1.0; - out_2192054780204158214[153] = 0.0; - out_2192054780204158214[154] = 0.0; - out_2192054780204158214[155] = 0.0; - out_2192054780204158214[156] = 0.0; - out_2192054780204158214[157] = 0.0; - out_2192054780204158214[158] = 0.0; - out_2192054780204158214[159] = 0.0; - out_2192054780204158214[160] = 0.0; - out_2192054780204158214[161] = 0.0; - out_2192054780204158214[162] = 0.0; - out_2192054780204158214[163] = 0.0; - out_2192054780204158214[164] = 0.0; - out_2192054780204158214[165] = 0.0; - out_2192054780204158214[166] = 0.0; - out_2192054780204158214[167] = 0.0; - out_2192054780204158214[168] = 0.0; - out_2192054780204158214[169] = 0.0; - out_2192054780204158214[170] = 0.0; - out_2192054780204158214[171] = 1.0; - out_2192054780204158214[172] = 0.0; - out_2192054780204158214[173] = 0.0; - out_2192054780204158214[174] = 0.0; - out_2192054780204158214[175] = 0.0; - out_2192054780204158214[176] = 0.0; - out_2192054780204158214[177] = 0.0; - out_2192054780204158214[178] = 0.0; - out_2192054780204158214[179] = 0.0; - out_2192054780204158214[180] = 0.0; - out_2192054780204158214[181] = 0.0; - out_2192054780204158214[182] = 0.0; - out_2192054780204158214[183] = 0.0; - out_2192054780204158214[184] = 0.0; - out_2192054780204158214[185] = 0.0; - out_2192054780204158214[186] = 0.0; - out_2192054780204158214[187] = 0.0; - out_2192054780204158214[188] = 0.0; - out_2192054780204158214[189] = 0.0; - out_2192054780204158214[190] = 1.0; - out_2192054780204158214[191] = 0.0; - out_2192054780204158214[192] = 0.0; - out_2192054780204158214[193] = 0.0; - out_2192054780204158214[194] = 0.0; - out_2192054780204158214[195] = 0.0; - out_2192054780204158214[196] = 0.0; - out_2192054780204158214[197] = 0.0; - out_2192054780204158214[198] = 0.0; - out_2192054780204158214[199] = 0.0; - out_2192054780204158214[200] = 0.0; - out_2192054780204158214[201] = 0.0; - out_2192054780204158214[202] = 0.0; - out_2192054780204158214[203] = 0.0; - out_2192054780204158214[204] = 0.0; - out_2192054780204158214[205] = 0.0; - out_2192054780204158214[206] = 0.0; - out_2192054780204158214[207] = 0.0; - out_2192054780204158214[208] = 0.0; - out_2192054780204158214[209] = 1.0; - out_2192054780204158214[210] = 0.0; - out_2192054780204158214[211] = 0.0; - out_2192054780204158214[212] = 0.0; - out_2192054780204158214[213] = 0.0; - out_2192054780204158214[214] = 0.0; - out_2192054780204158214[215] = 0.0; - out_2192054780204158214[216] = 0.0; - out_2192054780204158214[217] = 0.0; - out_2192054780204158214[218] = 0.0; - out_2192054780204158214[219] = 0.0; - out_2192054780204158214[220] = 0.0; - out_2192054780204158214[221] = 0.0; - out_2192054780204158214[222] = 0.0; - out_2192054780204158214[223] = 0.0; - out_2192054780204158214[224] = 0.0; - out_2192054780204158214[225] = 0.0; - out_2192054780204158214[226] = 0.0; - out_2192054780204158214[227] = 0.0; - out_2192054780204158214[228] = 1.0; - out_2192054780204158214[229] = 0.0; - out_2192054780204158214[230] = 0.0; - out_2192054780204158214[231] = 0.0; - out_2192054780204158214[232] = 0.0; - out_2192054780204158214[233] = 0.0; - out_2192054780204158214[234] = 0.0; - out_2192054780204158214[235] = 0.0; - out_2192054780204158214[236] = 0.0; - out_2192054780204158214[237] = 0.0; - out_2192054780204158214[238] = 0.0; - out_2192054780204158214[239] = 0.0; - out_2192054780204158214[240] = 0.0; - out_2192054780204158214[241] = 0.0; - out_2192054780204158214[242] = 0.0; - out_2192054780204158214[243] = 0.0; - out_2192054780204158214[244] = 0.0; - out_2192054780204158214[245] = 0.0; - out_2192054780204158214[246] = 0.0; - out_2192054780204158214[247] = 1.0; - out_2192054780204158214[248] = 0.0; - out_2192054780204158214[249] = 0.0; - out_2192054780204158214[250] = 0.0; - out_2192054780204158214[251] = 0.0; - out_2192054780204158214[252] = 0.0; - out_2192054780204158214[253] = 0.0; - out_2192054780204158214[254] = 0.0; - out_2192054780204158214[255] = 0.0; - out_2192054780204158214[256] = 0.0; - out_2192054780204158214[257] = 0.0; - out_2192054780204158214[258] = 0.0; - out_2192054780204158214[259] = 0.0; - out_2192054780204158214[260] = 0.0; - out_2192054780204158214[261] = 0.0; - out_2192054780204158214[262] = 0.0; - out_2192054780204158214[263] = 0.0; - out_2192054780204158214[264] = 0.0; - out_2192054780204158214[265] = 0.0; - out_2192054780204158214[266] = 1.0; - out_2192054780204158214[267] = 0.0; - out_2192054780204158214[268] = 0.0; - out_2192054780204158214[269] = 0.0; - out_2192054780204158214[270] = 0.0; - out_2192054780204158214[271] = 0.0; - out_2192054780204158214[272] = 0.0; - out_2192054780204158214[273] = 0.0; - out_2192054780204158214[274] = 0.0; - out_2192054780204158214[275] = 0.0; - out_2192054780204158214[276] = 0.0; - out_2192054780204158214[277] = 0.0; - out_2192054780204158214[278] = 0.0; - out_2192054780204158214[279] = 0.0; - out_2192054780204158214[280] = 0.0; - out_2192054780204158214[281] = 0.0; - out_2192054780204158214[282] = 0.0; - out_2192054780204158214[283] = 0.0; - out_2192054780204158214[284] = 0.0; - out_2192054780204158214[285] = 1.0; - out_2192054780204158214[286] = 0.0; - out_2192054780204158214[287] = 0.0; - out_2192054780204158214[288] = 0.0; - out_2192054780204158214[289] = 0.0; - out_2192054780204158214[290] = 0.0; - out_2192054780204158214[291] = 0.0; - out_2192054780204158214[292] = 0.0; - out_2192054780204158214[293] = 0.0; - out_2192054780204158214[294] = 0.0; - out_2192054780204158214[295] = 0.0; - out_2192054780204158214[296] = 0.0; - out_2192054780204158214[297] = 0.0; - out_2192054780204158214[298] = 0.0; - out_2192054780204158214[299] = 0.0; - out_2192054780204158214[300] = 0.0; - out_2192054780204158214[301] = 0.0; - out_2192054780204158214[302] = 0.0; - out_2192054780204158214[303] = 0.0; - out_2192054780204158214[304] = 1.0; - out_2192054780204158214[305] = 0.0; - out_2192054780204158214[306] = 0.0; - out_2192054780204158214[307] = 0.0; - out_2192054780204158214[308] = 0.0; - out_2192054780204158214[309] = 0.0; - out_2192054780204158214[310] = 0.0; - out_2192054780204158214[311] = 0.0; - out_2192054780204158214[312] = 0.0; - out_2192054780204158214[313] = 0.0; - out_2192054780204158214[314] = 0.0; - out_2192054780204158214[315] = 0.0; - out_2192054780204158214[316] = 0.0; - out_2192054780204158214[317] = 0.0; - out_2192054780204158214[318] = 0.0; - out_2192054780204158214[319] = 0.0; - out_2192054780204158214[320] = 0.0; - out_2192054780204158214[321] = 0.0; - out_2192054780204158214[322] = 0.0; - out_2192054780204158214[323] = 1.0; +void H_mod_fun(double *state, double *out_3205830260465553476) { + out_3205830260465553476[0] = 1.0; + out_3205830260465553476[1] = 0.0; + out_3205830260465553476[2] = 0.0; + out_3205830260465553476[3] = 0.0; + out_3205830260465553476[4] = 0.0; + out_3205830260465553476[5] = 0.0; + out_3205830260465553476[6] = 0.0; + out_3205830260465553476[7] = 0.0; + out_3205830260465553476[8] = 0.0; + out_3205830260465553476[9] = 0.0; + out_3205830260465553476[10] = 0.0; + out_3205830260465553476[11] = 0.0; + out_3205830260465553476[12] = 0.0; + out_3205830260465553476[13] = 0.0; + out_3205830260465553476[14] = 0.0; + out_3205830260465553476[15] = 0.0; + out_3205830260465553476[16] = 0.0; + out_3205830260465553476[17] = 0.0; + out_3205830260465553476[18] = 0.0; + out_3205830260465553476[19] = 1.0; + out_3205830260465553476[20] = 0.0; + out_3205830260465553476[21] = 0.0; + out_3205830260465553476[22] = 0.0; + out_3205830260465553476[23] = 0.0; + out_3205830260465553476[24] = 0.0; + out_3205830260465553476[25] = 0.0; + out_3205830260465553476[26] = 0.0; + out_3205830260465553476[27] = 0.0; + out_3205830260465553476[28] = 0.0; + out_3205830260465553476[29] = 0.0; + out_3205830260465553476[30] = 0.0; + out_3205830260465553476[31] = 0.0; + out_3205830260465553476[32] = 0.0; + out_3205830260465553476[33] = 0.0; + out_3205830260465553476[34] = 0.0; + out_3205830260465553476[35] = 0.0; + out_3205830260465553476[36] = 0.0; + out_3205830260465553476[37] = 0.0; + out_3205830260465553476[38] = 1.0; + out_3205830260465553476[39] = 0.0; + out_3205830260465553476[40] = 0.0; + out_3205830260465553476[41] = 0.0; + out_3205830260465553476[42] = 0.0; + out_3205830260465553476[43] = 0.0; + out_3205830260465553476[44] = 0.0; + out_3205830260465553476[45] = 0.0; + out_3205830260465553476[46] = 0.0; + out_3205830260465553476[47] = 0.0; + out_3205830260465553476[48] = 0.0; + out_3205830260465553476[49] = 0.0; + out_3205830260465553476[50] = 0.0; + out_3205830260465553476[51] = 0.0; + out_3205830260465553476[52] = 0.0; + out_3205830260465553476[53] = 0.0; + out_3205830260465553476[54] = 0.0; + out_3205830260465553476[55] = 0.0; + out_3205830260465553476[56] = 0.0; + out_3205830260465553476[57] = 1.0; + out_3205830260465553476[58] = 0.0; + out_3205830260465553476[59] = 0.0; + out_3205830260465553476[60] = 0.0; + out_3205830260465553476[61] = 0.0; + out_3205830260465553476[62] = 0.0; + out_3205830260465553476[63] = 0.0; + out_3205830260465553476[64] = 0.0; + out_3205830260465553476[65] = 0.0; + out_3205830260465553476[66] = 0.0; + out_3205830260465553476[67] = 0.0; + out_3205830260465553476[68] = 0.0; + out_3205830260465553476[69] = 0.0; + out_3205830260465553476[70] = 0.0; + out_3205830260465553476[71] = 0.0; + out_3205830260465553476[72] = 0.0; + out_3205830260465553476[73] = 0.0; + out_3205830260465553476[74] = 0.0; + out_3205830260465553476[75] = 0.0; + out_3205830260465553476[76] = 1.0; + out_3205830260465553476[77] = 0.0; + out_3205830260465553476[78] = 0.0; + out_3205830260465553476[79] = 0.0; + out_3205830260465553476[80] = 0.0; + out_3205830260465553476[81] = 0.0; + out_3205830260465553476[82] = 0.0; + out_3205830260465553476[83] = 0.0; + out_3205830260465553476[84] = 0.0; + out_3205830260465553476[85] = 0.0; + out_3205830260465553476[86] = 0.0; + out_3205830260465553476[87] = 0.0; + out_3205830260465553476[88] = 0.0; + out_3205830260465553476[89] = 0.0; + out_3205830260465553476[90] = 0.0; + out_3205830260465553476[91] = 0.0; + out_3205830260465553476[92] = 0.0; + out_3205830260465553476[93] = 0.0; + out_3205830260465553476[94] = 0.0; + out_3205830260465553476[95] = 1.0; + out_3205830260465553476[96] = 0.0; + out_3205830260465553476[97] = 0.0; + out_3205830260465553476[98] = 0.0; + out_3205830260465553476[99] = 0.0; + out_3205830260465553476[100] = 0.0; + out_3205830260465553476[101] = 0.0; + out_3205830260465553476[102] = 0.0; + out_3205830260465553476[103] = 0.0; + out_3205830260465553476[104] = 0.0; + out_3205830260465553476[105] = 0.0; + out_3205830260465553476[106] = 0.0; + out_3205830260465553476[107] = 0.0; + out_3205830260465553476[108] = 0.0; + out_3205830260465553476[109] = 0.0; + out_3205830260465553476[110] = 0.0; + out_3205830260465553476[111] = 0.0; + out_3205830260465553476[112] = 0.0; + out_3205830260465553476[113] = 0.0; + out_3205830260465553476[114] = 1.0; + out_3205830260465553476[115] = 0.0; + out_3205830260465553476[116] = 0.0; + out_3205830260465553476[117] = 0.0; + out_3205830260465553476[118] = 0.0; + out_3205830260465553476[119] = 0.0; + out_3205830260465553476[120] = 0.0; + out_3205830260465553476[121] = 0.0; + out_3205830260465553476[122] = 0.0; + out_3205830260465553476[123] = 0.0; + out_3205830260465553476[124] = 0.0; + out_3205830260465553476[125] = 0.0; + out_3205830260465553476[126] = 0.0; + out_3205830260465553476[127] = 0.0; + out_3205830260465553476[128] = 0.0; + out_3205830260465553476[129] = 0.0; + out_3205830260465553476[130] = 0.0; + out_3205830260465553476[131] = 0.0; + out_3205830260465553476[132] = 0.0; + out_3205830260465553476[133] = 1.0; + out_3205830260465553476[134] = 0.0; + out_3205830260465553476[135] = 0.0; + out_3205830260465553476[136] = 0.0; + out_3205830260465553476[137] = 0.0; + out_3205830260465553476[138] = 0.0; + out_3205830260465553476[139] = 0.0; + out_3205830260465553476[140] = 0.0; + out_3205830260465553476[141] = 0.0; + out_3205830260465553476[142] = 0.0; + out_3205830260465553476[143] = 0.0; + out_3205830260465553476[144] = 0.0; + out_3205830260465553476[145] = 0.0; + out_3205830260465553476[146] = 0.0; + out_3205830260465553476[147] = 0.0; + out_3205830260465553476[148] = 0.0; + out_3205830260465553476[149] = 0.0; + out_3205830260465553476[150] = 0.0; + out_3205830260465553476[151] = 0.0; + out_3205830260465553476[152] = 1.0; + out_3205830260465553476[153] = 0.0; + out_3205830260465553476[154] = 0.0; + out_3205830260465553476[155] = 0.0; + out_3205830260465553476[156] = 0.0; + out_3205830260465553476[157] = 0.0; + out_3205830260465553476[158] = 0.0; + out_3205830260465553476[159] = 0.0; + out_3205830260465553476[160] = 0.0; + out_3205830260465553476[161] = 0.0; + out_3205830260465553476[162] = 0.0; + out_3205830260465553476[163] = 0.0; + out_3205830260465553476[164] = 0.0; + out_3205830260465553476[165] = 0.0; + out_3205830260465553476[166] = 0.0; + out_3205830260465553476[167] = 0.0; + out_3205830260465553476[168] = 0.0; + out_3205830260465553476[169] = 0.0; + out_3205830260465553476[170] = 0.0; + out_3205830260465553476[171] = 1.0; + out_3205830260465553476[172] = 0.0; + out_3205830260465553476[173] = 0.0; + out_3205830260465553476[174] = 0.0; + out_3205830260465553476[175] = 0.0; + out_3205830260465553476[176] = 0.0; + out_3205830260465553476[177] = 0.0; + out_3205830260465553476[178] = 0.0; + out_3205830260465553476[179] = 0.0; + out_3205830260465553476[180] = 0.0; + out_3205830260465553476[181] = 0.0; + out_3205830260465553476[182] = 0.0; + out_3205830260465553476[183] = 0.0; + out_3205830260465553476[184] = 0.0; + out_3205830260465553476[185] = 0.0; + out_3205830260465553476[186] = 0.0; + out_3205830260465553476[187] = 0.0; + out_3205830260465553476[188] = 0.0; + out_3205830260465553476[189] = 0.0; + out_3205830260465553476[190] = 1.0; + out_3205830260465553476[191] = 0.0; + out_3205830260465553476[192] = 0.0; + out_3205830260465553476[193] = 0.0; + out_3205830260465553476[194] = 0.0; + out_3205830260465553476[195] = 0.0; + out_3205830260465553476[196] = 0.0; + out_3205830260465553476[197] = 0.0; + out_3205830260465553476[198] = 0.0; + out_3205830260465553476[199] = 0.0; + out_3205830260465553476[200] = 0.0; + out_3205830260465553476[201] = 0.0; + out_3205830260465553476[202] = 0.0; + out_3205830260465553476[203] = 0.0; + out_3205830260465553476[204] = 0.0; + out_3205830260465553476[205] = 0.0; + out_3205830260465553476[206] = 0.0; + out_3205830260465553476[207] = 0.0; + out_3205830260465553476[208] = 0.0; + out_3205830260465553476[209] = 1.0; + out_3205830260465553476[210] = 0.0; + out_3205830260465553476[211] = 0.0; + out_3205830260465553476[212] = 0.0; + out_3205830260465553476[213] = 0.0; + out_3205830260465553476[214] = 0.0; + out_3205830260465553476[215] = 0.0; + out_3205830260465553476[216] = 0.0; + out_3205830260465553476[217] = 0.0; + out_3205830260465553476[218] = 0.0; + out_3205830260465553476[219] = 0.0; + out_3205830260465553476[220] = 0.0; + out_3205830260465553476[221] = 0.0; + out_3205830260465553476[222] = 0.0; + out_3205830260465553476[223] = 0.0; + out_3205830260465553476[224] = 0.0; + out_3205830260465553476[225] = 0.0; + out_3205830260465553476[226] = 0.0; + out_3205830260465553476[227] = 0.0; + out_3205830260465553476[228] = 1.0; + out_3205830260465553476[229] = 0.0; + out_3205830260465553476[230] = 0.0; + out_3205830260465553476[231] = 0.0; + out_3205830260465553476[232] = 0.0; + out_3205830260465553476[233] = 0.0; + out_3205830260465553476[234] = 0.0; + out_3205830260465553476[235] = 0.0; + out_3205830260465553476[236] = 0.0; + out_3205830260465553476[237] = 0.0; + out_3205830260465553476[238] = 0.0; + out_3205830260465553476[239] = 0.0; + out_3205830260465553476[240] = 0.0; + out_3205830260465553476[241] = 0.0; + out_3205830260465553476[242] = 0.0; + out_3205830260465553476[243] = 0.0; + out_3205830260465553476[244] = 0.0; + out_3205830260465553476[245] = 0.0; + out_3205830260465553476[246] = 0.0; + out_3205830260465553476[247] = 1.0; + out_3205830260465553476[248] = 0.0; + out_3205830260465553476[249] = 0.0; + out_3205830260465553476[250] = 0.0; + out_3205830260465553476[251] = 0.0; + out_3205830260465553476[252] = 0.0; + out_3205830260465553476[253] = 0.0; + out_3205830260465553476[254] = 0.0; + out_3205830260465553476[255] = 0.0; + out_3205830260465553476[256] = 0.0; + out_3205830260465553476[257] = 0.0; + out_3205830260465553476[258] = 0.0; + out_3205830260465553476[259] = 0.0; + out_3205830260465553476[260] = 0.0; + out_3205830260465553476[261] = 0.0; + out_3205830260465553476[262] = 0.0; + out_3205830260465553476[263] = 0.0; + out_3205830260465553476[264] = 0.0; + out_3205830260465553476[265] = 0.0; + out_3205830260465553476[266] = 1.0; + out_3205830260465553476[267] = 0.0; + out_3205830260465553476[268] = 0.0; + out_3205830260465553476[269] = 0.0; + out_3205830260465553476[270] = 0.0; + out_3205830260465553476[271] = 0.0; + out_3205830260465553476[272] = 0.0; + out_3205830260465553476[273] = 0.0; + out_3205830260465553476[274] = 0.0; + out_3205830260465553476[275] = 0.0; + out_3205830260465553476[276] = 0.0; + out_3205830260465553476[277] = 0.0; + out_3205830260465553476[278] = 0.0; + out_3205830260465553476[279] = 0.0; + out_3205830260465553476[280] = 0.0; + out_3205830260465553476[281] = 0.0; + out_3205830260465553476[282] = 0.0; + out_3205830260465553476[283] = 0.0; + out_3205830260465553476[284] = 0.0; + out_3205830260465553476[285] = 1.0; + out_3205830260465553476[286] = 0.0; + out_3205830260465553476[287] = 0.0; + out_3205830260465553476[288] = 0.0; + out_3205830260465553476[289] = 0.0; + out_3205830260465553476[290] = 0.0; + out_3205830260465553476[291] = 0.0; + out_3205830260465553476[292] = 0.0; + out_3205830260465553476[293] = 0.0; + out_3205830260465553476[294] = 0.0; + out_3205830260465553476[295] = 0.0; + out_3205830260465553476[296] = 0.0; + out_3205830260465553476[297] = 0.0; + out_3205830260465553476[298] = 0.0; + out_3205830260465553476[299] = 0.0; + out_3205830260465553476[300] = 0.0; + out_3205830260465553476[301] = 0.0; + out_3205830260465553476[302] = 0.0; + out_3205830260465553476[303] = 0.0; + out_3205830260465553476[304] = 1.0; + out_3205830260465553476[305] = 0.0; + out_3205830260465553476[306] = 0.0; + out_3205830260465553476[307] = 0.0; + out_3205830260465553476[308] = 0.0; + out_3205830260465553476[309] = 0.0; + out_3205830260465553476[310] = 0.0; + out_3205830260465553476[311] = 0.0; + out_3205830260465553476[312] = 0.0; + out_3205830260465553476[313] = 0.0; + out_3205830260465553476[314] = 0.0; + out_3205830260465553476[315] = 0.0; + out_3205830260465553476[316] = 0.0; + out_3205830260465553476[317] = 0.0; + out_3205830260465553476[318] = 0.0; + out_3205830260465553476[319] = 0.0; + out_3205830260465553476[320] = 0.0; + out_3205830260465553476[321] = 0.0; + out_3205830260465553476[322] = 0.0; + out_3205830260465553476[323] = 1.0; } -void f_fun(double *state, double dt, double *out_8699512147542263638) { - out_8699512147542263638[0] = atan2((sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) - (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) + sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), -(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1])); - out_8699512147542263638[1] = asin(sin(dt*state[7])*cos(state[0])*cos(state[1]) - sin(dt*state[8])*sin(state[0])*cos(dt*state[7])*cos(state[1]) + sin(state[1])*cos(dt*state[7])*cos(dt*state[8])); - out_8699512147542263638[2] = atan2(-(-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) + sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]), -(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2])); - out_8699512147542263638[3] = dt*state[12] + state[3]; - out_8699512147542263638[4] = dt*state[13] + state[4]; - out_8699512147542263638[5] = dt*state[14] + state[5]; - out_8699512147542263638[6] = state[6]; - out_8699512147542263638[7] = state[7]; - out_8699512147542263638[8] = state[8]; - out_8699512147542263638[9] = state[9]; - out_8699512147542263638[10] = state[10]; - out_8699512147542263638[11] = state[11]; - out_8699512147542263638[12] = state[12]; - out_8699512147542263638[13] = state[13]; - out_8699512147542263638[14] = state[14]; - out_8699512147542263638[15] = state[15]; - out_8699512147542263638[16] = state[16]; - out_8699512147542263638[17] = state[17]; +void f_fun(double *state, double dt, double *out_4238396293587501899) { + out_4238396293587501899[0] = atan2((sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) - (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) + sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), -(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1])); + out_4238396293587501899[1] = asin(sin(dt*state[7])*cos(state[0])*cos(state[1]) - sin(dt*state[8])*sin(state[0])*cos(dt*state[7])*cos(state[1]) + sin(state[1])*cos(dt*state[7])*cos(dt*state[8])); + out_4238396293587501899[2] = atan2(-(-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) + sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]), -(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2])); + out_4238396293587501899[3] = dt*state[12] + state[3]; + out_4238396293587501899[4] = dt*state[13] + state[4]; + out_4238396293587501899[5] = dt*state[14] + state[5]; + out_4238396293587501899[6] = state[6]; + out_4238396293587501899[7] = state[7]; + out_4238396293587501899[8] = state[8]; + out_4238396293587501899[9] = state[9]; + out_4238396293587501899[10] = state[10]; + out_4238396293587501899[11] = state[11]; + out_4238396293587501899[12] = state[12]; + out_4238396293587501899[13] = state[13]; + out_4238396293587501899[14] = state[14]; + out_4238396293587501899[15] = state[15]; + out_4238396293587501899[16] = state[16]; + out_4238396293587501899[17] = state[17]; } -void F_fun(double *state, double dt, double *out_5585604130229028810) { - out_5585604130229028810[0] = ((-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*cos(state[0])*cos(state[1]) - sin(state[0])*cos(dt*state[6])*cos(dt*state[7])*cos(state[1]))*(-(sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) + (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) - sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]))/(pow(-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2) + pow((sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) - (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) + sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2)) + ((sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*cos(state[0])*cos(state[1]) - sin(dt*state[6])*sin(state[0])*cos(dt*state[7])*cos(state[1]))*(-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]))/(pow(-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2) + pow((sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) - (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) + sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2)); - out_5585604130229028810[1] = ((-sin(dt*state[6])*sin(dt*state[8]) - sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*cos(state[1]) - (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*sin(state[1]) - sin(state[1])*cos(dt*state[6])*cos(dt*state[7])*cos(state[0]))*(-(sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) + (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) - sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]))/(pow(-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2) + pow((sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) - (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) + sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2)) + (-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]))*(-(sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*sin(state[1]) + (-sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) + sin(dt*state[8])*cos(dt*state[6]))*cos(state[1]) - sin(dt*state[6])*sin(state[1])*cos(dt*state[7])*cos(state[0]))/(pow(-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2) + pow((sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) - (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) + sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2)); - out_5585604130229028810[2] = 0; - out_5585604130229028810[3] = 0; - out_5585604130229028810[4] = 0; - out_5585604130229028810[5] = 0; - out_5585604130229028810[6] = (-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]))*(dt*cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]) + (-dt*sin(dt*state[6])*sin(dt*state[8]) - dt*sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-dt*sin(dt*state[6])*cos(dt*state[8]) + dt*sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]))/(pow(-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2) + pow((sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) - (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) + sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2)) + (-(sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) + (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) - sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]))*(-dt*sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]) + (-dt*sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) - dt*cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) + (dt*sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - dt*sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]))/(pow(-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2) + pow((sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) - (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) + sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2)); - out_5585604130229028810[7] = (-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]))*(-dt*sin(dt*state[6])*sin(dt*state[7])*cos(state[0])*cos(state[1]) + dt*sin(dt*state[6])*sin(dt*state[8])*sin(state[0])*cos(dt*state[7])*cos(state[1]) - dt*sin(dt*state[6])*sin(state[1])*cos(dt*state[7])*cos(dt*state[8]))/(pow(-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2) + pow((sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) - (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) + sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2)) + (-(sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) + (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) - sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]))*(-dt*sin(dt*state[7])*cos(dt*state[6])*cos(state[0])*cos(state[1]) + dt*sin(dt*state[8])*sin(state[0])*cos(dt*state[6])*cos(dt*state[7])*cos(state[1]) - dt*sin(state[1])*cos(dt*state[6])*cos(dt*state[7])*cos(dt*state[8]))/(pow(-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2) + pow((sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) - (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) + sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2)); - out_5585604130229028810[8] = ((dt*sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + dt*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (dt*sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - dt*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]))*(-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]))/(pow(-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2) + pow((sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) - (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) + sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2)) + ((dt*sin(dt*state[6])*sin(dt*state[8]) + dt*sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) + (-dt*sin(dt*state[6])*cos(dt*state[8]) + dt*sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]))*(-(sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) + (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) - sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]))/(pow(-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2) + pow((sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) - (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) + sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2)); - out_5585604130229028810[9] = 0; - out_5585604130229028810[10] = 0; - out_5585604130229028810[11] = 0; - out_5585604130229028810[12] = 0; - out_5585604130229028810[13] = 0; - out_5585604130229028810[14] = 0; - out_5585604130229028810[15] = 0; - out_5585604130229028810[16] = 0; - out_5585604130229028810[17] = 0; - out_5585604130229028810[18] = (-sin(dt*state[7])*sin(state[0])*cos(state[1]) - sin(dt*state[8])*cos(dt*state[7])*cos(state[0])*cos(state[1]))/sqrt(1 - pow(sin(dt*state[7])*cos(state[0])*cos(state[1]) - sin(dt*state[8])*sin(state[0])*cos(dt*state[7])*cos(state[1]) + sin(state[1])*cos(dt*state[7])*cos(dt*state[8]), 2)); - out_5585604130229028810[19] = (-sin(dt*state[7])*sin(state[1])*cos(state[0]) + sin(dt*state[8])*sin(state[0])*sin(state[1])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1]))/sqrt(1 - pow(sin(dt*state[7])*cos(state[0])*cos(state[1]) - sin(dt*state[8])*sin(state[0])*cos(dt*state[7])*cos(state[1]) + sin(state[1])*cos(dt*state[7])*cos(dt*state[8]), 2)); - out_5585604130229028810[20] = 0; - out_5585604130229028810[21] = 0; - out_5585604130229028810[22] = 0; - out_5585604130229028810[23] = 0; - out_5585604130229028810[24] = 0; - out_5585604130229028810[25] = (dt*sin(dt*state[7])*sin(dt*state[8])*sin(state[0])*cos(state[1]) - dt*sin(dt*state[7])*sin(state[1])*cos(dt*state[8]) + dt*cos(dt*state[7])*cos(state[0])*cos(state[1]))/sqrt(1 - pow(sin(dt*state[7])*cos(state[0])*cos(state[1]) - sin(dt*state[8])*sin(state[0])*cos(dt*state[7])*cos(state[1]) + sin(state[1])*cos(dt*state[7])*cos(dt*state[8]), 2)); - out_5585604130229028810[26] = (-dt*sin(dt*state[8])*sin(state[1])*cos(dt*state[7]) - dt*sin(state[0])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]))/sqrt(1 - pow(sin(dt*state[7])*cos(state[0])*cos(state[1]) - sin(dt*state[8])*sin(state[0])*cos(dt*state[7])*cos(state[1]) + sin(state[1])*cos(dt*state[7])*cos(dt*state[8]), 2)); - out_5585604130229028810[27] = 0; - out_5585604130229028810[28] = 0; - out_5585604130229028810[29] = 0; - out_5585604130229028810[30] = 0; - out_5585604130229028810[31] = 0; - out_5585604130229028810[32] = 0; - out_5585604130229028810[33] = 0; - out_5585604130229028810[34] = 0; - out_5585604130229028810[35] = 0; - out_5585604130229028810[36] = ((sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[7]))*((-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) - (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) - sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]))/(pow(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]), 2) + pow(-(-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) + sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]), 2)) + ((-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[7]))*(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]))/(pow(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]), 2) + pow(-(-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) + sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]), 2)); - out_5585604130229028810[37] = (-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]))*(-sin(dt*state[7])*sin(state[2])*cos(state[0])*cos(state[1]) + sin(dt*state[8])*sin(state[0])*sin(state[2])*cos(dt*state[7])*cos(state[1]) - sin(state[1])*sin(state[2])*cos(dt*state[7])*cos(dt*state[8]))/(pow(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]), 2) + pow(-(-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) + sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]), 2)) + ((-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) - (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) - sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]))*(-sin(dt*state[7])*cos(state[0])*cos(state[1])*cos(state[2]) + sin(dt*state[8])*sin(state[0])*cos(dt*state[7])*cos(state[1])*cos(state[2]) - sin(state[1])*cos(dt*state[7])*cos(dt*state[8])*cos(state[2]))/(pow(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]), 2) + pow(-(-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) + sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]), 2)); - out_5585604130229028810[38] = ((-sin(state[0])*sin(state[2]) - sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]))*(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]))/(pow(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]), 2) + pow(-(-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) + sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]), 2)) + ((-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) + (-sin(state[0])*sin(state[1])*sin(state[2]) - cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) - sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]))*((-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) - (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) - sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]))/(pow(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]), 2) + pow(-(-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) + sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]), 2)); - out_5585604130229028810[39] = 0; - out_5585604130229028810[40] = 0; - out_5585604130229028810[41] = 0; - out_5585604130229028810[42] = 0; - out_5585604130229028810[43] = (-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]))*(dt*(sin(state[0])*cos(state[2]) - sin(state[1])*sin(state[2])*cos(state[0]))*cos(dt*state[7]) - dt*(sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[7])*sin(dt*state[8]) - dt*sin(dt*state[7])*sin(state[2])*cos(dt*state[8])*cos(state[1]))/(pow(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]), 2) + pow(-(-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) + sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]), 2)) + ((-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) - (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) - sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]))*(dt*(-sin(state[0])*sin(state[2]) - sin(state[1])*cos(state[0])*cos(state[2]))*cos(dt*state[7]) - dt*(sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[7])*sin(dt*state[8]) - dt*sin(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]))/(pow(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]), 2) + pow(-(-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) + sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]), 2)); - out_5585604130229028810[44] = (dt*(sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*cos(dt*state[7])*cos(dt*state[8]) - dt*sin(dt*state[8])*sin(state[2])*cos(dt*state[7])*cos(state[1]))*(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]))/(pow(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]), 2) + pow(-(-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) + sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]), 2)) + (dt*(sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*cos(dt*state[7])*cos(dt*state[8]) - dt*sin(dt*state[8])*cos(dt*state[7])*cos(state[1])*cos(state[2]))*((-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) - (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) - sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]))/(pow(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]), 2) + pow(-(-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) + sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]), 2)); - out_5585604130229028810[45] = 0; - out_5585604130229028810[46] = 0; - out_5585604130229028810[47] = 0; - out_5585604130229028810[48] = 0; - out_5585604130229028810[49] = 0; - out_5585604130229028810[50] = 0; - out_5585604130229028810[51] = 0; - out_5585604130229028810[52] = 0; - out_5585604130229028810[53] = 0; - out_5585604130229028810[54] = 0; - out_5585604130229028810[55] = 0; - out_5585604130229028810[56] = 0; - out_5585604130229028810[57] = 1; - out_5585604130229028810[58] = 0; - out_5585604130229028810[59] = 0; - out_5585604130229028810[60] = 0; - out_5585604130229028810[61] = 0; - out_5585604130229028810[62] = 0; - out_5585604130229028810[63] = 0; - out_5585604130229028810[64] = 0; - out_5585604130229028810[65] = 0; - out_5585604130229028810[66] = dt; - out_5585604130229028810[67] = 0; - out_5585604130229028810[68] = 0; - out_5585604130229028810[69] = 0; - out_5585604130229028810[70] = 0; - out_5585604130229028810[71] = 0; - out_5585604130229028810[72] = 0; - out_5585604130229028810[73] = 0; - out_5585604130229028810[74] = 0; - out_5585604130229028810[75] = 0; - out_5585604130229028810[76] = 1; - out_5585604130229028810[77] = 0; - out_5585604130229028810[78] = 0; - out_5585604130229028810[79] = 0; - out_5585604130229028810[80] = 0; - out_5585604130229028810[81] = 0; - out_5585604130229028810[82] = 0; - out_5585604130229028810[83] = 0; - out_5585604130229028810[84] = 0; - out_5585604130229028810[85] = dt; - out_5585604130229028810[86] = 0; - out_5585604130229028810[87] = 0; - out_5585604130229028810[88] = 0; - out_5585604130229028810[89] = 0; - out_5585604130229028810[90] = 0; - out_5585604130229028810[91] = 0; - out_5585604130229028810[92] = 0; - out_5585604130229028810[93] = 0; - out_5585604130229028810[94] = 0; - out_5585604130229028810[95] = 1; - out_5585604130229028810[96] = 0; - out_5585604130229028810[97] = 0; - out_5585604130229028810[98] = 0; - out_5585604130229028810[99] = 0; - out_5585604130229028810[100] = 0; - out_5585604130229028810[101] = 0; - out_5585604130229028810[102] = 0; - out_5585604130229028810[103] = 0; - out_5585604130229028810[104] = dt; - out_5585604130229028810[105] = 0; - out_5585604130229028810[106] = 0; - out_5585604130229028810[107] = 0; - out_5585604130229028810[108] = 0; - out_5585604130229028810[109] = 0; - out_5585604130229028810[110] = 0; - out_5585604130229028810[111] = 0; - out_5585604130229028810[112] = 0; - out_5585604130229028810[113] = 0; - out_5585604130229028810[114] = 1; - out_5585604130229028810[115] = 0; - out_5585604130229028810[116] = 0; - out_5585604130229028810[117] = 0; - out_5585604130229028810[118] = 0; - out_5585604130229028810[119] = 0; - out_5585604130229028810[120] = 0; - out_5585604130229028810[121] = 0; - out_5585604130229028810[122] = 0; - out_5585604130229028810[123] = 0; - out_5585604130229028810[124] = 0; - out_5585604130229028810[125] = 0; - out_5585604130229028810[126] = 0; - out_5585604130229028810[127] = 0; - out_5585604130229028810[128] = 0; - out_5585604130229028810[129] = 0; - out_5585604130229028810[130] = 0; - out_5585604130229028810[131] = 0; - out_5585604130229028810[132] = 0; - out_5585604130229028810[133] = 1; - out_5585604130229028810[134] = 0; - out_5585604130229028810[135] = 0; - out_5585604130229028810[136] = 0; - out_5585604130229028810[137] = 0; - out_5585604130229028810[138] = 0; - out_5585604130229028810[139] = 0; - out_5585604130229028810[140] = 0; - out_5585604130229028810[141] = 0; - out_5585604130229028810[142] = 0; - out_5585604130229028810[143] = 0; - out_5585604130229028810[144] = 0; - out_5585604130229028810[145] = 0; - out_5585604130229028810[146] = 0; - out_5585604130229028810[147] = 0; - out_5585604130229028810[148] = 0; - out_5585604130229028810[149] = 0; - out_5585604130229028810[150] = 0; - out_5585604130229028810[151] = 0; - out_5585604130229028810[152] = 1; - out_5585604130229028810[153] = 0; - out_5585604130229028810[154] = 0; - out_5585604130229028810[155] = 0; - out_5585604130229028810[156] = 0; - out_5585604130229028810[157] = 0; - out_5585604130229028810[158] = 0; - out_5585604130229028810[159] = 0; - out_5585604130229028810[160] = 0; - out_5585604130229028810[161] = 0; - out_5585604130229028810[162] = 0; - out_5585604130229028810[163] = 0; - out_5585604130229028810[164] = 0; - out_5585604130229028810[165] = 0; - out_5585604130229028810[166] = 0; - out_5585604130229028810[167] = 0; - out_5585604130229028810[168] = 0; - out_5585604130229028810[169] = 0; - out_5585604130229028810[170] = 0; - out_5585604130229028810[171] = 1; - out_5585604130229028810[172] = 0; - out_5585604130229028810[173] = 0; - out_5585604130229028810[174] = 0; - out_5585604130229028810[175] = 0; - out_5585604130229028810[176] = 0; - out_5585604130229028810[177] = 0; - out_5585604130229028810[178] = 0; - out_5585604130229028810[179] = 0; - out_5585604130229028810[180] = 0; - out_5585604130229028810[181] = 0; - out_5585604130229028810[182] = 0; - out_5585604130229028810[183] = 0; - out_5585604130229028810[184] = 0; - out_5585604130229028810[185] = 0; - out_5585604130229028810[186] = 0; - out_5585604130229028810[187] = 0; - out_5585604130229028810[188] = 0; - out_5585604130229028810[189] = 0; - out_5585604130229028810[190] = 1; - out_5585604130229028810[191] = 0; - out_5585604130229028810[192] = 0; - out_5585604130229028810[193] = 0; - out_5585604130229028810[194] = 0; - out_5585604130229028810[195] = 0; - out_5585604130229028810[196] = 0; - out_5585604130229028810[197] = 0; - out_5585604130229028810[198] = 0; - out_5585604130229028810[199] = 0; - out_5585604130229028810[200] = 0; - out_5585604130229028810[201] = 0; - out_5585604130229028810[202] = 0; - out_5585604130229028810[203] = 0; - out_5585604130229028810[204] = 0; - out_5585604130229028810[205] = 0; - out_5585604130229028810[206] = 0; - out_5585604130229028810[207] = 0; - out_5585604130229028810[208] = 0; - out_5585604130229028810[209] = 1; - out_5585604130229028810[210] = 0; - out_5585604130229028810[211] = 0; - out_5585604130229028810[212] = 0; - out_5585604130229028810[213] = 0; - out_5585604130229028810[214] = 0; - out_5585604130229028810[215] = 0; - out_5585604130229028810[216] = 0; - out_5585604130229028810[217] = 0; - out_5585604130229028810[218] = 0; - out_5585604130229028810[219] = 0; - out_5585604130229028810[220] = 0; - out_5585604130229028810[221] = 0; - out_5585604130229028810[222] = 0; - out_5585604130229028810[223] = 0; - out_5585604130229028810[224] = 0; - out_5585604130229028810[225] = 0; - out_5585604130229028810[226] = 0; - out_5585604130229028810[227] = 0; - out_5585604130229028810[228] = 1; - out_5585604130229028810[229] = 0; - out_5585604130229028810[230] = 0; - out_5585604130229028810[231] = 0; - out_5585604130229028810[232] = 0; - out_5585604130229028810[233] = 0; - out_5585604130229028810[234] = 0; - out_5585604130229028810[235] = 0; - out_5585604130229028810[236] = 0; - out_5585604130229028810[237] = 0; - out_5585604130229028810[238] = 0; - out_5585604130229028810[239] = 0; - out_5585604130229028810[240] = 0; - out_5585604130229028810[241] = 0; - out_5585604130229028810[242] = 0; - out_5585604130229028810[243] = 0; - out_5585604130229028810[244] = 0; - out_5585604130229028810[245] = 0; - out_5585604130229028810[246] = 0; - out_5585604130229028810[247] = 1; - out_5585604130229028810[248] = 0; - out_5585604130229028810[249] = 0; - out_5585604130229028810[250] = 0; - out_5585604130229028810[251] = 0; - out_5585604130229028810[252] = 0; - out_5585604130229028810[253] = 0; - out_5585604130229028810[254] = 0; - out_5585604130229028810[255] = 0; - out_5585604130229028810[256] = 0; - out_5585604130229028810[257] = 0; - out_5585604130229028810[258] = 0; - out_5585604130229028810[259] = 0; - out_5585604130229028810[260] = 0; - out_5585604130229028810[261] = 0; - out_5585604130229028810[262] = 0; - out_5585604130229028810[263] = 0; - out_5585604130229028810[264] = 0; - out_5585604130229028810[265] = 0; - out_5585604130229028810[266] = 1; - out_5585604130229028810[267] = 0; - out_5585604130229028810[268] = 0; - out_5585604130229028810[269] = 0; - out_5585604130229028810[270] = 0; - out_5585604130229028810[271] = 0; - out_5585604130229028810[272] = 0; - out_5585604130229028810[273] = 0; - out_5585604130229028810[274] = 0; - out_5585604130229028810[275] = 0; - out_5585604130229028810[276] = 0; - out_5585604130229028810[277] = 0; - out_5585604130229028810[278] = 0; - out_5585604130229028810[279] = 0; - out_5585604130229028810[280] = 0; - out_5585604130229028810[281] = 0; - out_5585604130229028810[282] = 0; - out_5585604130229028810[283] = 0; - out_5585604130229028810[284] = 0; - out_5585604130229028810[285] = 1; - out_5585604130229028810[286] = 0; - out_5585604130229028810[287] = 0; - out_5585604130229028810[288] = 0; - out_5585604130229028810[289] = 0; - out_5585604130229028810[290] = 0; - out_5585604130229028810[291] = 0; - out_5585604130229028810[292] = 0; - out_5585604130229028810[293] = 0; - out_5585604130229028810[294] = 0; - out_5585604130229028810[295] = 0; - out_5585604130229028810[296] = 0; - out_5585604130229028810[297] = 0; - out_5585604130229028810[298] = 0; - out_5585604130229028810[299] = 0; - out_5585604130229028810[300] = 0; - out_5585604130229028810[301] = 0; - out_5585604130229028810[302] = 0; - out_5585604130229028810[303] = 0; - out_5585604130229028810[304] = 1; - out_5585604130229028810[305] = 0; - out_5585604130229028810[306] = 0; - out_5585604130229028810[307] = 0; - out_5585604130229028810[308] = 0; - out_5585604130229028810[309] = 0; - out_5585604130229028810[310] = 0; - out_5585604130229028810[311] = 0; - out_5585604130229028810[312] = 0; - out_5585604130229028810[313] = 0; - out_5585604130229028810[314] = 0; - out_5585604130229028810[315] = 0; - out_5585604130229028810[316] = 0; - out_5585604130229028810[317] = 0; - out_5585604130229028810[318] = 0; - out_5585604130229028810[319] = 0; - out_5585604130229028810[320] = 0; - out_5585604130229028810[321] = 0; - out_5585604130229028810[322] = 0; - out_5585604130229028810[323] = 1; +void F_fun(double *state, double dt, double *out_6003141237729326165) { + out_6003141237729326165[0] = ((-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*cos(state[0])*cos(state[1]) - sin(state[0])*cos(dt*state[6])*cos(dt*state[7])*cos(state[1]))*(-(sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) + (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) - sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]))/(pow(-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2) + pow((sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) - (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) + sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2)) + ((sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*cos(state[0])*cos(state[1]) - sin(dt*state[6])*sin(state[0])*cos(dt*state[7])*cos(state[1]))*(-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]))/(pow(-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2) + pow((sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) - (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) + sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2)); + out_6003141237729326165[1] = ((-sin(dt*state[6])*sin(dt*state[8]) - sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*cos(state[1]) - (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*sin(state[1]) - sin(state[1])*cos(dt*state[6])*cos(dt*state[7])*cos(state[0]))*(-(sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) + (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) - sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]))/(pow(-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2) + pow((sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) - (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) + sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2)) + (-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]))*(-(sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*sin(state[1]) + (-sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) + sin(dt*state[8])*cos(dt*state[6]))*cos(state[1]) - sin(dt*state[6])*sin(state[1])*cos(dt*state[7])*cos(state[0]))/(pow(-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2) + pow((sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) - (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) + sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2)); + out_6003141237729326165[2] = 0; + out_6003141237729326165[3] = 0; + out_6003141237729326165[4] = 0; + out_6003141237729326165[5] = 0; + out_6003141237729326165[6] = (-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]))*(dt*cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]) + (-dt*sin(dt*state[6])*sin(dt*state[8]) - dt*sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-dt*sin(dt*state[6])*cos(dt*state[8]) + dt*sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]))/(pow(-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2) + pow((sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) - (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) + sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2)) + (-(sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) + (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) - sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]))*(-dt*sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]) + (-dt*sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) - dt*cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) + (dt*sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - dt*sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]))/(pow(-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2) + pow((sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) - (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) + sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2)); + out_6003141237729326165[7] = (-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]))*(-dt*sin(dt*state[6])*sin(dt*state[7])*cos(state[0])*cos(state[1]) + dt*sin(dt*state[6])*sin(dt*state[8])*sin(state[0])*cos(dt*state[7])*cos(state[1]) - dt*sin(dt*state[6])*sin(state[1])*cos(dt*state[7])*cos(dt*state[8]))/(pow(-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2) + pow((sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) - (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) + sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2)) + (-(sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) + (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) - sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]))*(-dt*sin(dt*state[7])*cos(dt*state[6])*cos(state[0])*cos(state[1]) + dt*sin(dt*state[8])*sin(state[0])*cos(dt*state[6])*cos(dt*state[7])*cos(state[1]) - dt*sin(state[1])*cos(dt*state[6])*cos(dt*state[7])*cos(dt*state[8]))/(pow(-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2) + pow((sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) - (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) + sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2)); + out_6003141237729326165[8] = ((dt*sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + dt*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (dt*sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - dt*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]))*(-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]))/(pow(-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2) + pow((sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) - (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) + sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2)) + ((dt*sin(dt*state[6])*sin(dt*state[8]) + dt*sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) + (-dt*sin(dt*state[6])*cos(dt*state[8]) + dt*sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]))*(-(sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) + (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) - sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]))/(pow(-(sin(dt*state[6])*sin(dt*state[8]) + sin(dt*state[7])*cos(dt*state[6])*cos(dt*state[8]))*sin(state[1]) + (-sin(dt*state[6])*cos(dt*state[8]) + sin(dt*state[7])*sin(dt*state[8])*cos(dt*state[6]))*sin(state[0])*cos(state[1]) + cos(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2) + pow((sin(dt*state[6])*sin(dt*state[7])*sin(dt*state[8]) + cos(dt*state[6])*cos(dt*state[8]))*sin(state[0])*cos(state[1]) - (sin(dt*state[6])*sin(dt*state[7])*cos(dt*state[8]) - sin(dt*state[8])*cos(dt*state[6]))*sin(state[1]) + sin(dt*state[6])*cos(dt*state[7])*cos(state[0])*cos(state[1]), 2)); + out_6003141237729326165[9] = 0; + out_6003141237729326165[10] = 0; + out_6003141237729326165[11] = 0; + out_6003141237729326165[12] = 0; + out_6003141237729326165[13] = 0; + out_6003141237729326165[14] = 0; + out_6003141237729326165[15] = 0; + out_6003141237729326165[16] = 0; + out_6003141237729326165[17] = 0; + out_6003141237729326165[18] = (-sin(dt*state[7])*sin(state[0])*cos(state[1]) - sin(dt*state[8])*cos(dt*state[7])*cos(state[0])*cos(state[1]))/sqrt(1 - pow(sin(dt*state[7])*cos(state[0])*cos(state[1]) - sin(dt*state[8])*sin(state[0])*cos(dt*state[7])*cos(state[1]) + sin(state[1])*cos(dt*state[7])*cos(dt*state[8]), 2)); + out_6003141237729326165[19] = (-sin(dt*state[7])*sin(state[1])*cos(state[0]) + sin(dt*state[8])*sin(state[0])*sin(state[1])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1]))/sqrt(1 - pow(sin(dt*state[7])*cos(state[0])*cos(state[1]) - sin(dt*state[8])*sin(state[0])*cos(dt*state[7])*cos(state[1]) + sin(state[1])*cos(dt*state[7])*cos(dt*state[8]), 2)); + out_6003141237729326165[20] = 0; + out_6003141237729326165[21] = 0; + out_6003141237729326165[22] = 0; + out_6003141237729326165[23] = 0; + out_6003141237729326165[24] = 0; + out_6003141237729326165[25] = (dt*sin(dt*state[7])*sin(dt*state[8])*sin(state[0])*cos(state[1]) - dt*sin(dt*state[7])*sin(state[1])*cos(dt*state[8]) + dt*cos(dt*state[7])*cos(state[0])*cos(state[1]))/sqrt(1 - pow(sin(dt*state[7])*cos(state[0])*cos(state[1]) - sin(dt*state[8])*sin(state[0])*cos(dt*state[7])*cos(state[1]) + sin(state[1])*cos(dt*state[7])*cos(dt*state[8]), 2)); + out_6003141237729326165[26] = (-dt*sin(dt*state[8])*sin(state[1])*cos(dt*state[7]) - dt*sin(state[0])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]))/sqrt(1 - pow(sin(dt*state[7])*cos(state[0])*cos(state[1]) - sin(dt*state[8])*sin(state[0])*cos(dt*state[7])*cos(state[1]) + sin(state[1])*cos(dt*state[7])*cos(dt*state[8]), 2)); + out_6003141237729326165[27] = 0; + out_6003141237729326165[28] = 0; + out_6003141237729326165[29] = 0; + out_6003141237729326165[30] = 0; + out_6003141237729326165[31] = 0; + out_6003141237729326165[32] = 0; + out_6003141237729326165[33] = 0; + out_6003141237729326165[34] = 0; + out_6003141237729326165[35] = 0; + out_6003141237729326165[36] = ((sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[7]))*((-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) - (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) - sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]))/(pow(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]), 2) + pow(-(-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) + sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]), 2)) + ((-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[7]))*(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]))/(pow(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]), 2) + pow(-(-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) + sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]), 2)); + out_6003141237729326165[37] = (-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]))*(-sin(dt*state[7])*sin(state[2])*cos(state[0])*cos(state[1]) + sin(dt*state[8])*sin(state[0])*sin(state[2])*cos(dt*state[7])*cos(state[1]) - sin(state[1])*sin(state[2])*cos(dt*state[7])*cos(dt*state[8]))/(pow(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]), 2) + pow(-(-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) + sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]), 2)) + ((-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) - (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) - sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]))*(-sin(dt*state[7])*cos(state[0])*cos(state[1])*cos(state[2]) + sin(dt*state[8])*sin(state[0])*cos(dt*state[7])*cos(state[1])*cos(state[2]) - sin(state[1])*cos(dt*state[7])*cos(dt*state[8])*cos(state[2]))/(pow(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]), 2) + pow(-(-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) + sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]), 2)); + out_6003141237729326165[38] = ((-sin(state[0])*sin(state[2]) - sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]))*(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]))/(pow(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]), 2) + pow(-(-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) + sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]), 2)) + ((-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) + (-sin(state[0])*sin(state[1])*sin(state[2]) - cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) - sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]))*((-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) - (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) - sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]))/(pow(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]), 2) + pow(-(-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) + sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]), 2)); + out_6003141237729326165[39] = 0; + out_6003141237729326165[40] = 0; + out_6003141237729326165[41] = 0; + out_6003141237729326165[42] = 0; + out_6003141237729326165[43] = (-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]))*(dt*(sin(state[0])*cos(state[2]) - sin(state[1])*sin(state[2])*cos(state[0]))*cos(dt*state[7]) - dt*(sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[7])*sin(dt*state[8]) - dt*sin(dt*state[7])*sin(state[2])*cos(dt*state[8])*cos(state[1]))/(pow(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]), 2) + pow(-(-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) + sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]), 2)) + ((-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) - (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) - sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]))*(dt*(-sin(state[0])*sin(state[2]) - sin(state[1])*cos(state[0])*cos(state[2]))*cos(dt*state[7]) - dt*(sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[7])*sin(dt*state[8]) - dt*sin(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]))/(pow(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]), 2) + pow(-(-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) + sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]), 2)); + out_6003141237729326165[44] = (dt*(sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*cos(dt*state[7])*cos(dt*state[8]) - dt*sin(dt*state[8])*sin(state[2])*cos(dt*state[7])*cos(state[1]))*(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]))/(pow(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]), 2) + pow(-(-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) + sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]), 2)) + (dt*(sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*cos(dt*state[7])*cos(dt*state[8]) - dt*sin(dt*state[8])*cos(dt*state[7])*cos(state[1])*cos(state[2]))*((-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) - (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) - sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]))/(pow(-(sin(state[0])*sin(state[2]) + sin(state[1])*cos(state[0])*cos(state[2]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*cos(state[2]) - sin(state[2])*cos(state[0]))*sin(dt*state[8])*cos(dt*state[7]) + cos(dt*state[7])*cos(dt*state[8])*cos(state[1])*cos(state[2]), 2) + pow(-(-sin(state[0])*cos(state[2]) + sin(state[1])*sin(state[2])*cos(state[0]))*sin(dt*state[7]) + (sin(state[0])*sin(state[1])*sin(state[2]) + cos(state[0])*cos(state[2]))*sin(dt*state[8])*cos(dt*state[7]) + sin(state[2])*cos(dt*state[7])*cos(dt*state[8])*cos(state[1]), 2)); + out_6003141237729326165[45] = 0; + out_6003141237729326165[46] = 0; + out_6003141237729326165[47] = 0; + out_6003141237729326165[48] = 0; + out_6003141237729326165[49] = 0; + out_6003141237729326165[50] = 0; + out_6003141237729326165[51] = 0; + out_6003141237729326165[52] = 0; + out_6003141237729326165[53] = 0; + out_6003141237729326165[54] = 0; + out_6003141237729326165[55] = 0; + out_6003141237729326165[56] = 0; + out_6003141237729326165[57] = 1; + out_6003141237729326165[58] = 0; + out_6003141237729326165[59] = 0; + out_6003141237729326165[60] = 0; + out_6003141237729326165[61] = 0; + out_6003141237729326165[62] = 0; + out_6003141237729326165[63] = 0; + out_6003141237729326165[64] = 0; + out_6003141237729326165[65] = 0; + out_6003141237729326165[66] = dt; + out_6003141237729326165[67] = 0; + out_6003141237729326165[68] = 0; + out_6003141237729326165[69] = 0; + out_6003141237729326165[70] = 0; + out_6003141237729326165[71] = 0; + out_6003141237729326165[72] = 0; + out_6003141237729326165[73] = 0; + out_6003141237729326165[74] = 0; + out_6003141237729326165[75] = 0; + out_6003141237729326165[76] = 1; + out_6003141237729326165[77] = 0; + out_6003141237729326165[78] = 0; + out_6003141237729326165[79] = 0; + out_6003141237729326165[80] = 0; + out_6003141237729326165[81] = 0; + out_6003141237729326165[82] = 0; + out_6003141237729326165[83] = 0; + out_6003141237729326165[84] = 0; + out_6003141237729326165[85] = dt; + out_6003141237729326165[86] = 0; + out_6003141237729326165[87] = 0; + out_6003141237729326165[88] = 0; + out_6003141237729326165[89] = 0; + out_6003141237729326165[90] = 0; + out_6003141237729326165[91] = 0; + out_6003141237729326165[92] = 0; + out_6003141237729326165[93] = 0; + out_6003141237729326165[94] = 0; + out_6003141237729326165[95] = 1; + out_6003141237729326165[96] = 0; + out_6003141237729326165[97] = 0; + out_6003141237729326165[98] = 0; + out_6003141237729326165[99] = 0; + out_6003141237729326165[100] = 0; + out_6003141237729326165[101] = 0; + out_6003141237729326165[102] = 0; + out_6003141237729326165[103] = 0; + out_6003141237729326165[104] = dt; + out_6003141237729326165[105] = 0; + out_6003141237729326165[106] = 0; + out_6003141237729326165[107] = 0; + out_6003141237729326165[108] = 0; + out_6003141237729326165[109] = 0; + out_6003141237729326165[110] = 0; + out_6003141237729326165[111] = 0; + out_6003141237729326165[112] = 0; + out_6003141237729326165[113] = 0; + out_6003141237729326165[114] = 1; + out_6003141237729326165[115] = 0; + out_6003141237729326165[116] = 0; + out_6003141237729326165[117] = 0; + out_6003141237729326165[118] = 0; + out_6003141237729326165[119] = 0; + out_6003141237729326165[120] = 0; + out_6003141237729326165[121] = 0; + out_6003141237729326165[122] = 0; + out_6003141237729326165[123] = 0; + out_6003141237729326165[124] = 0; + out_6003141237729326165[125] = 0; + out_6003141237729326165[126] = 0; + out_6003141237729326165[127] = 0; + out_6003141237729326165[128] = 0; + out_6003141237729326165[129] = 0; + out_6003141237729326165[130] = 0; + out_6003141237729326165[131] = 0; + out_6003141237729326165[132] = 0; + out_6003141237729326165[133] = 1; + out_6003141237729326165[134] = 0; + out_6003141237729326165[135] = 0; + out_6003141237729326165[136] = 0; + out_6003141237729326165[137] = 0; + out_6003141237729326165[138] = 0; + out_6003141237729326165[139] = 0; + out_6003141237729326165[140] = 0; + out_6003141237729326165[141] = 0; + out_6003141237729326165[142] = 0; + out_6003141237729326165[143] = 0; + out_6003141237729326165[144] = 0; + out_6003141237729326165[145] = 0; + out_6003141237729326165[146] = 0; + out_6003141237729326165[147] = 0; + out_6003141237729326165[148] = 0; + out_6003141237729326165[149] = 0; + out_6003141237729326165[150] = 0; + out_6003141237729326165[151] = 0; + out_6003141237729326165[152] = 1; + out_6003141237729326165[153] = 0; + out_6003141237729326165[154] = 0; + out_6003141237729326165[155] = 0; + out_6003141237729326165[156] = 0; + out_6003141237729326165[157] = 0; + out_6003141237729326165[158] = 0; + out_6003141237729326165[159] = 0; + out_6003141237729326165[160] = 0; + out_6003141237729326165[161] = 0; + out_6003141237729326165[162] = 0; + out_6003141237729326165[163] = 0; + out_6003141237729326165[164] = 0; + out_6003141237729326165[165] = 0; + out_6003141237729326165[166] = 0; + out_6003141237729326165[167] = 0; + out_6003141237729326165[168] = 0; + out_6003141237729326165[169] = 0; + out_6003141237729326165[170] = 0; + out_6003141237729326165[171] = 1; + out_6003141237729326165[172] = 0; + out_6003141237729326165[173] = 0; + out_6003141237729326165[174] = 0; + out_6003141237729326165[175] = 0; + out_6003141237729326165[176] = 0; + out_6003141237729326165[177] = 0; + out_6003141237729326165[178] = 0; + out_6003141237729326165[179] = 0; + out_6003141237729326165[180] = 0; + out_6003141237729326165[181] = 0; + out_6003141237729326165[182] = 0; + out_6003141237729326165[183] = 0; + out_6003141237729326165[184] = 0; + out_6003141237729326165[185] = 0; + out_6003141237729326165[186] = 0; + out_6003141237729326165[187] = 0; + out_6003141237729326165[188] = 0; + out_6003141237729326165[189] = 0; + out_6003141237729326165[190] = 1; + out_6003141237729326165[191] = 0; + out_6003141237729326165[192] = 0; + out_6003141237729326165[193] = 0; + out_6003141237729326165[194] = 0; + out_6003141237729326165[195] = 0; + out_6003141237729326165[196] = 0; + out_6003141237729326165[197] = 0; + out_6003141237729326165[198] = 0; + out_6003141237729326165[199] = 0; + out_6003141237729326165[200] = 0; + out_6003141237729326165[201] = 0; + out_6003141237729326165[202] = 0; + out_6003141237729326165[203] = 0; + out_6003141237729326165[204] = 0; + out_6003141237729326165[205] = 0; + out_6003141237729326165[206] = 0; + out_6003141237729326165[207] = 0; + out_6003141237729326165[208] = 0; + out_6003141237729326165[209] = 1; + out_6003141237729326165[210] = 0; + out_6003141237729326165[211] = 0; + out_6003141237729326165[212] = 0; + out_6003141237729326165[213] = 0; + out_6003141237729326165[214] = 0; + out_6003141237729326165[215] = 0; + out_6003141237729326165[216] = 0; + out_6003141237729326165[217] = 0; + out_6003141237729326165[218] = 0; + out_6003141237729326165[219] = 0; + out_6003141237729326165[220] = 0; + out_6003141237729326165[221] = 0; + out_6003141237729326165[222] = 0; + out_6003141237729326165[223] = 0; + out_6003141237729326165[224] = 0; + out_6003141237729326165[225] = 0; + out_6003141237729326165[226] = 0; + out_6003141237729326165[227] = 0; + out_6003141237729326165[228] = 1; + out_6003141237729326165[229] = 0; + out_6003141237729326165[230] = 0; + out_6003141237729326165[231] = 0; + out_6003141237729326165[232] = 0; + out_6003141237729326165[233] = 0; + out_6003141237729326165[234] = 0; + out_6003141237729326165[235] = 0; + out_6003141237729326165[236] = 0; + out_6003141237729326165[237] = 0; + out_6003141237729326165[238] = 0; + out_6003141237729326165[239] = 0; + out_6003141237729326165[240] = 0; + out_6003141237729326165[241] = 0; + out_6003141237729326165[242] = 0; + out_6003141237729326165[243] = 0; + out_6003141237729326165[244] = 0; + out_6003141237729326165[245] = 0; + out_6003141237729326165[246] = 0; + out_6003141237729326165[247] = 1; + out_6003141237729326165[248] = 0; + out_6003141237729326165[249] = 0; + out_6003141237729326165[250] = 0; + out_6003141237729326165[251] = 0; + out_6003141237729326165[252] = 0; + out_6003141237729326165[253] = 0; + out_6003141237729326165[254] = 0; + out_6003141237729326165[255] = 0; + out_6003141237729326165[256] = 0; + out_6003141237729326165[257] = 0; + out_6003141237729326165[258] = 0; + out_6003141237729326165[259] = 0; + out_6003141237729326165[260] = 0; + out_6003141237729326165[261] = 0; + out_6003141237729326165[262] = 0; + out_6003141237729326165[263] = 0; + out_6003141237729326165[264] = 0; + out_6003141237729326165[265] = 0; + out_6003141237729326165[266] = 1; + out_6003141237729326165[267] = 0; + out_6003141237729326165[268] = 0; + out_6003141237729326165[269] = 0; + out_6003141237729326165[270] = 0; + out_6003141237729326165[271] = 0; + out_6003141237729326165[272] = 0; + out_6003141237729326165[273] = 0; + out_6003141237729326165[274] = 0; + out_6003141237729326165[275] = 0; + out_6003141237729326165[276] = 0; + out_6003141237729326165[277] = 0; + out_6003141237729326165[278] = 0; + out_6003141237729326165[279] = 0; + out_6003141237729326165[280] = 0; + out_6003141237729326165[281] = 0; + out_6003141237729326165[282] = 0; + out_6003141237729326165[283] = 0; + out_6003141237729326165[284] = 0; + out_6003141237729326165[285] = 1; + out_6003141237729326165[286] = 0; + out_6003141237729326165[287] = 0; + out_6003141237729326165[288] = 0; + out_6003141237729326165[289] = 0; + out_6003141237729326165[290] = 0; + out_6003141237729326165[291] = 0; + out_6003141237729326165[292] = 0; + out_6003141237729326165[293] = 0; + out_6003141237729326165[294] = 0; + out_6003141237729326165[295] = 0; + out_6003141237729326165[296] = 0; + out_6003141237729326165[297] = 0; + out_6003141237729326165[298] = 0; + out_6003141237729326165[299] = 0; + out_6003141237729326165[300] = 0; + out_6003141237729326165[301] = 0; + out_6003141237729326165[302] = 0; + out_6003141237729326165[303] = 0; + out_6003141237729326165[304] = 1; + out_6003141237729326165[305] = 0; + out_6003141237729326165[306] = 0; + out_6003141237729326165[307] = 0; + out_6003141237729326165[308] = 0; + out_6003141237729326165[309] = 0; + out_6003141237729326165[310] = 0; + out_6003141237729326165[311] = 0; + out_6003141237729326165[312] = 0; + out_6003141237729326165[313] = 0; + out_6003141237729326165[314] = 0; + out_6003141237729326165[315] = 0; + out_6003141237729326165[316] = 0; + out_6003141237729326165[317] = 0; + out_6003141237729326165[318] = 0; + out_6003141237729326165[319] = 0; + out_6003141237729326165[320] = 0; + out_6003141237729326165[321] = 0; + out_6003141237729326165[322] = 0; + out_6003141237729326165[323] = 1; } -void h_4(double *state, double *unused, double *out_7040990451462861704) { - out_7040990451462861704[0] = state[6] + state[9]; - out_7040990451462861704[1] = state[7] + state[10]; - out_7040990451462861704[2] = state[8] + state[11]; +void h_4(double *state, double *unused, double *out_6516003908446642780) { + out_6516003908446642780[0] = state[6] + state[9]; + out_6516003908446642780[1] = state[7] + state[10]; + out_6516003908446642780[2] = state[8] + state[11]; } -void H_4(double *state, double *unused, double *out_8084524700677117702) { - out_8084524700677117702[0] = 0; - out_8084524700677117702[1] = 0; - out_8084524700677117702[2] = 0; - out_8084524700677117702[3] = 0; - out_8084524700677117702[4] = 0; - out_8084524700677117702[5] = 0; - out_8084524700677117702[6] = 1; - out_8084524700677117702[7] = 0; - out_8084524700677117702[8] = 0; - out_8084524700677117702[9] = 1; - out_8084524700677117702[10] = 0; - out_8084524700677117702[11] = 0; - out_8084524700677117702[12] = 0; - out_8084524700677117702[13] = 0; - out_8084524700677117702[14] = 0; - out_8084524700677117702[15] = 0; - out_8084524700677117702[16] = 0; - out_8084524700677117702[17] = 0; - out_8084524700677117702[18] = 0; - out_8084524700677117702[19] = 0; - out_8084524700677117702[20] = 0; - out_8084524700677117702[21] = 0; - out_8084524700677117702[22] = 0; - out_8084524700677117702[23] = 0; - out_8084524700677117702[24] = 0; - out_8084524700677117702[25] = 1; - out_8084524700677117702[26] = 0; - out_8084524700677117702[27] = 0; - out_8084524700677117702[28] = 1; - out_8084524700677117702[29] = 0; - out_8084524700677117702[30] = 0; - out_8084524700677117702[31] = 0; - out_8084524700677117702[32] = 0; - out_8084524700677117702[33] = 0; - out_8084524700677117702[34] = 0; - out_8084524700677117702[35] = 0; - out_8084524700677117702[36] = 0; - out_8084524700677117702[37] = 0; - out_8084524700677117702[38] = 0; - out_8084524700677117702[39] = 0; - out_8084524700677117702[40] = 0; - out_8084524700677117702[41] = 0; - out_8084524700677117702[42] = 0; - out_8084524700677117702[43] = 0; - out_8084524700677117702[44] = 1; - out_8084524700677117702[45] = 0; - out_8084524700677117702[46] = 0; - out_8084524700677117702[47] = 1; - out_8084524700677117702[48] = 0; - out_8084524700677117702[49] = 0; - out_8084524700677117702[50] = 0; - out_8084524700677117702[51] = 0; - out_8084524700677117702[52] = 0; - out_8084524700677117702[53] = 0; +void H_4(double *state, double *unused, double *out_8358348645504634211) { + out_8358348645504634211[0] = 0; + out_8358348645504634211[1] = 0; + out_8358348645504634211[2] = 0; + out_8358348645504634211[3] = 0; + out_8358348645504634211[4] = 0; + out_8358348645504634211[5] = 0; + out_8358348645504634211[6] = 1; + out_8358348645504634211[7] = 0; + out_8358348645504634211[8] = 0; + out_8358348645504634211[9] = 1; + out_8358348645504634211[10] = 0; + out_8358348645504634211[11] = 0; + out_8358348645504634211[12] = 0; + out_8358348645504634211[13] = 0; + out_8358348645504634211[14] = 0; + out_8358348645504634211[15] = 0; + out_8358348645504634211[16] = 0; + out_8358348645504634211[17] = 0; + out_8358348645504634211[18] = 0; + out_8358348645504634211[19] = 0; + out_8358348645504634211[20] = 0; + out_8358348645504634211[21] = 0; + out_8358348645504634211[22] = 0; + out_8358348645504634211[23] = 0; + out_8358348645504634211[24] = 0; + out_8358348645504634211[25] = 1; + out_8358348645504634211[26] = 0; + out_8358348645504634211[27] = 0; + out_8358348645504634211[28] = 1; + out_8358348645504634211[29] = 0; + out_8358348645504634211[30] = 0; + out_8358348645504634211[31] = 0; + out_8358348645504634211[32] = 0; + out_8358348645504634211[33] = 0; + out_8358348645504634211[34] = 0; + out_8358348645504634211[35] = 0; + out_8358348645504634211[36] = 0; + out_8358348645504634211[37] = 0; + out_8358348645504634211[38] = 0; + out_8358348645504634211[39] = 0; + out_8358348645504634211[40] = 0; + out_8358348645504634211[41] = 0; + out_8358348645504634211[42] = 0; + out_8358348645504634211[43] = 0; + out_8358348645504634211[44] = 1; + out_8358348645504634211[45] = 0; + out_8358348645504634211[46] = 0; + out_8358348645504634211[47] = 1; + out_8358348645504634211[48] = 0; + out_8358348645504634211[49] = 0; + out_8358348645504634211[50] = 0; + out_8358348645504634211[51] = 0; + out_8358348645504634211[52] = 0; + out_8358348645504634211[53] = 0; } -void h_10(double *state, double *unused, double *out_5385759793768973690) { - out_5385759793768973690[0] = 9.8100000000000005*sin(state[1]) - state[4]*state[8] + state[5]*state[7] + state[12] + state[15]; - out_5385759793768973690[1] = -9.8100000000000005*sin(state[0])*cos(state[1]) + state[3]*state[8] - state[5]*state[6] + state[13] + state[16]; - out_5385759793768973690[2] = -9.8100000000000005*cos(state[0])*cos(state[1]) - state[3]*state[7] + state[4]*state[6] + state[14] + state[17]; +void h_10(double *state, double *unused, double *out_5069419514865957544) { + out_5069419514865957544[0] = 9.8100000000000005*sin(state[1]) - state[4]*state[8] + state[5]*state[7] + state[12] + state[15]; + out_5069419514865957544[1] = -9.8100000000000005*sin(state[0])*cos(state[1]) + state[3]*state[8] - state[5]*state[6] + state[13] + state[16]; + out_5069419514865957544[2] = -9.8100000000000005*cos(state[0])*cos(state[1]) - state[3]*state[7] + state[4]*state[6] + state[14] + state[17]; } -void H_10(double *state, double *unused, double *out_522586112484741399) { - out_522586112484741399[0] = 0; - out_522586112484741399[1] = 9.8100000000000005*cos(state[1]); - out_522586112484741399[2] = 0; - out_522586112484741399[3] = 0; - out_522586112484741399[4] = -state[8]; - out_522586112484741399[5] = state[7]; - out_522586112484741399[6] = 0; - out_522586112484741399[7] = state[5]; - out_522586112484741399[8] = -state[4]; - out_522586112484741399[9] = 0; - out_522586112484741399[10] = 0; - out_522586112484741399[11] = 0; - out_522586112484741399[12] = 1; - out_522586112484741399[13] = 0; - out_522586112484741399[14] = 0; - out_522586112484741399[15] = 1; - out_522586112484741399[16] = 0; - out_522586112484741399[17] = 0; - out_522586112484741399[18] = -9.8100000000000005*cos(state[0])*cos(state[1]); - out_522586112484741399[19] = 9.8100000000000005*sin(state[0])*sin(state[1]); - out_522586112484741399[20] = 0; - out_522586112484741399[21] = state[8]; - out_522586112484741399[22] = 0; - out_522586112484741399[23] = -state[6]; - out_522586112484741399[24] = -state[5]; - out_522586112484741399[25] = 0; - out_522586112484741399[26] = state[3]; - out_522586112484741399[27] = 0; - out_522586112484741399[28] = 0; - out_522586112484741399[29] = 0; - out_522586112484741399[30] = 0; - out_522586112484741399[31] = 1; - out_522586112484741399[32] = 0; - out_522586112484741399[33] = 0; - out_522586112484741399[34] = 1; - out_522586112484741399[35] = 0; - out_522586112484741399[36] = 9.8100000000000005*sin(state[0])*cos(state[1]); - out_522586112484741399[37] = 9.8100000000000005*sin(state[1])*cos(state[0]); - out_522586112484741399[38] = 0; - out_522586112484741399[39] = -state[7]; - out_522586112484741399[40] = state[6]; - out_522586112484741399[41] = 0; - out_522586112484741399[42] = state[4]; - out_522586112484741399[43] = -state[3]; - out_522586112484741399[44] = 0; - out_522586112484741399[45] = 0; - out_522586112484741399[46] = 0; - out_522586112484741399[47] = 0; - out_522586112484741399[48] = 0; - out_522586112484741399[49] = 0; - out_522586112484741399[50] = 1; - out_522586112484741399[51] = 0; - out_522586112484741399[52] = 0; - out_522586112484741399[53] = 1; +void H_10(double *state, double *unused, double *out_2285557584559061390) { + out_2285557584559061390[0] = 0; + out_2285557584559061390[1] = 9.8100000000000005*cos(state[1]); + out_2285557584559061390[2] = 0; + out_2285557584559061390[3] = 0; + out_2285557584559061390[4] = -state[8]; + out_2285557584559061390[5] = state[7]; + out_2285557584559061390[6] = 0; + out_2285557584559061390[7] = state[5]; + out_2285557584559061390[8] = -state[4]; + out_2285557584559061390[9] = 0; + out_2285557584559061390[10] = 0; + out_2285557584559061390[11] = 0; + out_2285557584559061390[12] = 1; + out_2285557584559061390[13] = 0; + out_2285557584559061390[14] = 0; + out_2285557584559061390[15] = 1; + out_2285557584559061390[16] = 0; + out_2285557584559061390[17] = 0; + out_2285557584559061390[18] = -9.8100000000000005*cos(state[0])*cos(state[1]); + out_2285557584559061390[19] = 9.8100000000000005*sin(state[0])*sin(state[1]); + out_2285557584559061390[20] = 0; + out_2285557584559061390[21] = state[8]; + out_2285557584559061390[22] = 0; + out_2285557584559061390[23] = -state[6]; + out_2285557584559061390[24] = -state[5]; + out_2285557584559061390[25] = 0; + out_2285557584559061390[26] = state[3]; + out_2285557584559061390[27] = 0; + out_2285557584559061390[28] = 0; + out_2285557584559061390[29] = 0; + out_2285557584559061390[30] = 0; + out_2285557584559061390[31] = 1; + out_2285557584559061390[32] = 0; + out_2285557584559061390[33] = 0; + out_2285557584559061390[34] = 1; + out_2285557584559061390[35] = 0; + out_2285557584559061390[36] = 9.8100000000000005*sin(state[0])*cos(state[1]); + out_2285557584559061390[37] = 9.8100000000000005*sin(state[1])*cos(state[0]); + out_2285557584559061390[38] = 0; + out_2285557584559061390[39] = -state[7]; + out_2285557584559061390[40] = state[6]; + out_2285557584559061390[41] = 0; + out_2285557584559061390[42] = state[4]; + out_2285557584559061390[43] = -state[3]; + out_2285557584559061390[44] = 0; + out_2285557584559061390[45] = 0; + out_2285557584559061390[46] = 0; + out_2285557584559061390[47] = 0; + out_2285557584559061390[48] = 0; + out_2285557584559061390[49] = 0; + out_2285557584559061390[50] = 1; + out_2285557584559061390[51] = 0; + out_2285557584559061390[52] = 0; + out_2285557584559061390[53] = 1; } -void h_13(double *state, double *unused, double *out_1659773189667427592) { - out_1659773189667427592[0] = state[3]; - out_1659773189667427592[1] = state[4]; - out_1659773189667427592[2] = state[5]; +void h_13(double *state, double *unused, double *out_3114619426317878324) { + out_3114619426317878324[0] = state[3]; + out_3114619426317878324[1] = state[4]; + out_3114619426317878324[2] = state[5]; } -void H_13(double *state, double *unused, double *out_4872250875344784901) { - out_4872250875344784901[0] = 0; - out_4872250875344784901[1] = 0; - out_4872250875344784901[2] = 0; - out_4872250875344784901[3] = 1; - out_4872250875344784901[4] = 0; - out_4872250875344784901[5] = 0; - out_4872250875344784901[6] = 0; - out_4872250875344784901[7] = 0; - out_4872250875344784901[8] = 0; - out_4872250875344784901[9] = 0; - out_4872250875344784901[10] = 0; - out_4872250875344784901[11] = 0; - out_4872250875344784901[12] = 0; - out_4872250875344784901[13] = 0; - out_4872250875344784901[14] = 0; - out_4872250875344784901[15] = 0; - out_4872250875344784901[16] = 0; - out_4872250875344784901[17] = 0; - out_4872250875344784901[18] = 0; - out_4872250875344784901[19] = 0; - out_4872250875344784901[20] = 0; - out_4872250875344784901[21] = 0; - out_4872250875344784901[22] = 1; - out_4872250875344784901[23] = 0; - out_4872250875344784901[24] = 0; - out_4872250875344784901[25] = 0; - out_4872250875344784901[26] = 0; - out_4872250875344784901[27] = 0; - out_4872250875344784901[28] = 0; - out_4872250875344784901[29] = 0; - out_4872250875344784901[30] = 0; - out_4872250875344784901[31] = 0; - out_4872250875344784901[32] = 0; - out_4872250875344784901[33] = 0; - out_4872250875344784901[34] = 0; - out_4872250875344784901[35] = 0; - out_4872250875344784901[36] = 0; - out_4872250875344784901[37] = 0; - out_4872250875344784901[38] = 0; - out_4872250875344784901[39] = 0; - out_4872250875344784901[40] = 0; - out_4872250875344784901[41] = 1; - out_4872250875344784901[42] = 0; - out_4872250875344784901[43] = 0; - out_4872250875344784901[44] = 0; - out_4872250875344784901[45] = 0; - out_4872250875344784901[46] = 0; - out_4872250875344784901[47] = 0; - out_4872250875344784901[48] = 0; - out_4872250875344784901[49] = 0; - out_4872250875344784901[50] = 0; - out_4872250875344784901[51] = 0; - out_4872250875344784901[52] = 0; - out_4872250875344784901[53] = 0; +void H_13(double *state, double *unused, double *out_6876121602872584604) { + out_6876121602872584604[0] = 0; + out_6876121602872584604[1] = 0; + out_6876121602872584604[2] = 0; + out_6876121602872584604[3] = 1; + out_6876121602872584604[4] = 0; + out_6876121602872584604[5] = 0; + out_6876121602872584604[6] = 0; + out_6876121602872584604[7] = 0; + out_6876121602872584604[8] = 0; + out_6876121602872584604[9] = 0; + out_6876121602872584604[10] = 0; + out_6876121602872584604[11] = 0; + out_6876121602872584604[12] = 0; + out_6876121602872584604[13] = 0; + out_6876121602872584604[14] = 0; + out_6876121602872584604[15] = 0; + out_6876121602872584604[16] = 0; + out_6876121602872584604[17] = 0; + out_6876121602872584604[18] = 0; + out_6876121602872584604[19] = 0; + out_6876121602872584604[20] = 0; + out_6876121602872584604[21] = 0; + out_6876121602872584604[22] = 1; + out_6876121602872584604[23] = 0; + out_6876121602872584604[24] = 0; + out_6876121602872584604[25] = 0; + out_6876121602872584604[26] = 0; + out_6876121602872584604[27] = 0; + out_6876121602872584604[28] = 0; + out_6876121602872584604[29] = 0; + out_6876121602872584604[30] = 0; + out_6876121602872584604[31] = 0; + out_6876121602872584604[32] = 0; + out_6876121602872584604[33] = 0; + out_6876121602872584604[34] = 0; + out_6876121602872584604[35] = 0; + out_6876121602872584604[36] = 0; + out_6876121602872584604[37] = 0; + out_6876121602872584604[38] = 0; + out_6876121602872584604[39] = 0; + out_6876121602872584604[40] = 0; + out_6876121602872584604[41] = 1; + out_6876121602872584604[42] = 0; + out_6876121602872584604[43] = 0; + out_6876121602872584604[44] = 0; + out_6876121602872584604[45] = 0; + out_6876121602872584604[46] = 0; + out_6876121602872584604[47] = 0; + out_6876121602872584604[48] = 0; + out_6876121602872584604[49] = 0; + out_6876121602872584604[50] = 0; + out_6876121602872584604[51] = 0; + out_6876121602872584604[52] = 0; + out_6876121602872584604[53] = 0; } -void h_14(double *state, double *unused, double *out_6941415956428537191) { - out_6941415956428537191[0] = state[6]; - out_6941415956428537191[1] = state[7]; - out_6941415956428537191[2] = state[8]; +void h_14(double *state, double *unused, double *out_5969212145833405866) { + out_5969212145833405866[0] = state[6]; + out_5969212145833405866[1] = state[7]; + out_5969212145833405866[2] = state[8]; } -void H_14(double *state, double *unused, double *out_8519641227322001301) { - out_8519641227322001301[0] = 0; - out_8519641227322001301[1] = 0; - out_8519641227322001301[2] = 0; - out_8519641227322001301[3] = 0; - out_8519641227322001301[4] = 0; - out_8519641227322001301[5] = 0; - out_8519641227322001301[6] = 1; - out_8519641227322001301[7] = 0; - out_8519641227322001301[8] = 0; - out_8519641227322001301[9] = 0; - out_8519641227322001301[10] = 0; - out_8519641227322001301[11] = 0; - out_8519641227322001301[12] = 0; - out_8519641227322001301[13] = 0; - out_8519641227322001301[14] = 0; - out_8519641227322001301[15] = 0; - out_8519641227322001301[16] = 0; - out_8519641227322001301[17] = 0; - out_8519641227322001301[18] = 0; - out_8519641227322001301[19] = 0; - out_8519641227322001301[20] = 0; - out_8519641227322001301[21] = 0; - out_8519641227322001301[22] = 0; - out_8519641227322001301[23] = 0; - out_8519641227322001301[24] = 0; - out_8519641227322001301[25] = 1; - out_8519641227322001301[26] = 0; - out_8519641227322001301[27] = 0; - out_8519641227322001301[28] = 0; - out_8519641227322001301[29] = 0; - out_8519641227322001301[30] = 0; - out_8519641227322001301[31] = 0; - out_8519641227322001301[32] = 0; - out_8519641227322001301[33] = 0; - out_8519641227322001301[34] = 0; - out_8519641227322001301[35] = 0; - out_8519641227322001301[36] = 0; - out_8519641227322001301[37] = 0; - out_8519641227322001301[38] = 0; - out_8519641227322001301[39] = 0; - out_8519641227322001301[40] = 0; - out_8519641227322001301[41] = 0; - out_8519641227322001301[42] = 0; - out_8519641227322001301[43] = 0; - out_8519641227322001301[44] = 1; - out_8519641227322001301[45] = 0; - out_8519641227322001301[46] = 0; - out_8519641227322001301[47] = 0; - out_8519641227322001301[48] = 0; - out_8519641227322001301[49] = 0; - out_8519641227322001301[50] = 0; - out_8519641227322001301[51] = 0; - out_8519641227322001301[52] = 0; - out_8519641227322001301[53] = 0; +void H_14(double *state, double *unused, double *out_6125154571865432876) { + out_6125154571865432876[0] = 0; + out_6125154571865432876[1] = 0; + out_6125154571865432876[2] = 0; + out_6125154571865432876[3] = 0; + out_6125154571865432876[4] = 0; + out_6125154571865432876[5] = 0; + out_6125154571865432876[6] = 1; + out_6125154571865432876[7] = 0; + out_6125154571865432876[8] = 0; + out_6125154571865432876[9] = 0; + out_6125154571865432876[10] = 0; + out_6125154571865432876[11] = 0; + out_6125154571865432876[12] = 0; + out_6125154571865432876[13] = 0; + out_6125154571865432876[14] = 0; + out_6125154571865432876[15] = 0; + out_6125154571865432876[16] = 0; + out_6125154571865432876[17] = 0; + out_6125154571865432876[18] = 0; + out_6125154571865432876[19] = 0; + out_6125154571865432876[20] = 0; + out_6125154571865432876[21] = 0; + out_6125154571865432876[22] = 0; + out_6125154571865432876[23] = 0; + out_6125154571865432876[24] = 0; + out_6125154571865432876[25] = 1; + out_6125154571865432876[26] = 0; + out_6125154571865432876[27] = 0; + out_6125154571865432876[28] = 0; + out_6125154571865432876[29] = 0; + out_6125154571865432876[30] = 0; + out_6125154571865432876[31] = 0; + out_6125154571865432876[32] = 0; + out_6125154571865432876[33] = 0; + out_6125154571865432876[34] = 0; + out_6125154571865432876[35] = 0; + out_6125154571865432876[36] = 0; + out_6125154571865432876[37] = 0; + out_6125154571865432876[38] = 0; + out_6125154571865432876[39] = 0; + out_6125154571865432876[40] = 0; + out_6125154571865432876[41] = 0; + out_6125154571865432876[42] = 0; + out_6125154571865432876[43] = 0; + out_6125154571865432876[44] = 1; + out_6125154571865432876[45] = 0; + out_6125154571865432876[46] = 0; + out_6125154571865432876[47] = 0; + out_6125154571865432876[48] = 0; + out_6125154571865432876[49] = 0; + out_6125154571865432876[50] = 0; + out_6125154571865432876[51] = 0; + out_6125154571865432876[52] = 0; + out_6125154571865432876[53] = 0; } #include #include @@ -1113,44 +1113,44 @@ void pose_update_13(double *in_x, double *in_P, double *in_z, double *in_R, doub void pose_update_14(double *in_x, double *in_P, double *in_z, double *in_R, double *in_ea) { update<3, 3, 0>(in_x, in_P, h_14, H_14, NULL, in_z, in_R, in_ea, MAHA_THRESH_14); } -void pose_err_fun(double *nom_x, double *delta_x, double *out_4948547112888214127) { - err_fun(nom_x, delta_x, out_4948547112888214127); +void pose_err_fun(double *nom_x, double *delta_x, double *out_8909220829729456592) { + err_fun(nom_x, delta_x, out_8909220829729456592); } -void pose_inv_err_fun(double *nom_x, double *true_x, double *out_1637666684293454320) { - inv_err_fun(nom_x, true_x, out_1637666684293454320); +void pose_inv_err_fun(double *nom_x, double *true_x, double *out_8068156223905085053) { + inv_err_fun(nom_x, true_x, out_8068156223905085053); } -void pose_H_mod_fun(double *state, double *out_2192054780204158214) { - H_mod_fun(state, out_2192054780204158214); +void pose_H_mod_fun(double *state, double *out_3205830260465553476) { + H_mod_fun(state, out_3205830260465553476); } -void pose_f_fun(double *state, double dt, double *out_8699512147542263638) { - f_fun(state, dt, out_8699512147542263638); +void pose_f_fun(double *state, double dt, double *out_4238396293587501899) { + f_fun(state, dt, out_4238396293587501899); } -void pose_F_fun(double *state, double dt, double *out_5585604130229028810) { - F_fun(state, dt, out_5585604130229028810); +void pose_F_fun(double *state, double dt, double *out_6003141237729326165) { + F_fun(state, dt, out_6003141237729326165); } -void pose_h_4(double *state, double *unused, double *out_7040990451462861704) { - h_4(state, unused, out_7040990451462861704); +void pose_h_4(double *state, double *unused, double *out_6516003908446642780) { + h_4(state, unused, out_6516003908446642780); } -void pose_H_4(double *state, double *unused, double *out_8084524700677117702) { - H_4(state, unused, out_8084524700677117702); +void pose_H_4(double *state, double *unused, double *out_8358348645504634211) { + H_4(state, unused, out_8358348645504634211); } -void pose_h_10(double *state, double *unused, double *out_5385759793768973690) { - h_10(state, unused, out_5385759793768973690); +void pose_h_10(double *state, double *unused, double *out_5069419514865957544) { + h_10(state, unused, out_5069419514865957544); } -void pose_H_10(double *state, double *unused, double *out_522586112484741399) { - H_10(state, unused, out_522586112484741399); +void pose_H_10(double *state, double *unused, double *out_2285557584559061390) { + H_10(state, unused, out_2285557584559061390); } -void pose_h_13(double *state, double *unused, double *out_1659773189667427592) { - h_13(state, unused, out_1659773189667427592); +void pose_h_13(double *state, double *unused, double *out_3114619426317878324) { + h_13(state, unused, out_3114619426317878324); } -void pose_H_13(double *state, double *unused, double *out_4872250875344784901) { - H_13(state, unused, out_4872250875344784901); +void pose_H_13(double *state, double *unused, double *out_6876121602872584604) { + H_13(state, unused, out_6876121602872584604); } -void pose_h_14(double *state, double *unused, double *out_6941415956428537191) { - h_14(state, unused, out_6941415956428537191); +void pose_h_14(double *state, double *unused, double *out_5969212145833405866) { + h_14(state, unused, out_5969212145833405866); } -void pose_H_14(double *state, double *unused, double *out_8519641227322001301) { - H_14(state, unused, out_8519641227322001301); +void pose_H_14(double *state, double *unused, double *out_6125154571865432876) { + H_14(state, unused, out_6125154571865432876); } void pose_predict(double *in_x, double *in_P, double *in_Q, double dt) { predict(in_x, in_P, in_Q, dt); diff --git a/openpilot/selfdrive/locationd/models/generated/pose.h b/openpilot/selfdrive/locationd/models/generated/pose.h index 547626c762..a8605a594a 100644 --- a/openpilot/selfdrive/locationd/models/generated/pose.h +++ b/openpilot/selfdrive/locationd/models/generated/pose.h @@ -5,18 +5,18 @@ void pose_update_4(double *in_x, double *in_P, double *in_z, double *in_R, doubl void pose_update_10(double *in_x, double *in_P, double *in_z, double *in_R, double *in_ea); void pose_update_13(double *in_x, double *in_P, double *in_z, double *in_R, double *in_ea); void pose_update_14(double *in_x, double *in_P, double *in_z, double *in_R, double *in_ea); -void pose_err_fun(double *nom_x, double *delta_x, double *out_4948547112888214127); -void pose_inv_err_fun(double *nom_x, double *true_x, double *out_1637666684293454320); -void pose_H_mod_fun(double *state, double *out_2192054780204158214); -void pose_f_fun(double *state, double dt, double *out_8699512147542263638); -void pose_F_fun(double *state, double dt, double *out_5585604130229028810); -void pose_h_4(double *state, double *unused, double *out_7040990451462861704); -void pose_H_4(double *state, double *unused, double *out_8084524700677117702); -void pose_h_10(double *state, double *unused, double *out_5385759793768973690); -void pose_H_10(double *state, double *unused, double *out_522586112484741399); -void pose_h_13(double *state, double *unused, double *out_1659773189667427592); -void pose_H_13(double *state, double *unused, double *out_4872250875344784901); -void pose_h_14(double *state, double *unused, double *out_6941415956428537191); -void pose_H_14(double *state, double *unused, double *out_8519641227322001301); +void pose_err_fun(double *nom_x, double *delta_x, double *out_8909220829729456592); +void pose_inv_err_fun(double *nom_x, double *true_x, double *out_8068156223905085053); +void pose_H_mod_fun(double *state, double *out_3205830260465553476); +void pose_f_fun(double *state, double dt, double *out_4238396293587501899); +void pose_F_fun(double *state, double dt, double *out_6003141237729326165); +void pose_h_4(double *state, double *unused, double *out_6516003908446642780); +void pose_H_4(double *state, double *unused, double *out_8358348645504634211); +void pose_h_10(double *state, double *unused, double *out_5069419514865957544); +void pose_H_10(double *state, double *unused, double *out_2285557584559061390); +void pose_h_13(double *state, double *unused, double *out_3114619426317878324); +void pose_H_13(double *state, double *unused, double *out_6876121602872584604); +void pose_h_14(double *state, double *unused, double *out_5969212145833405866); +void pose_H_14(double *state, double *unused, double *out_6125154571865432876); void pose_predict(double *in_x, double *in_P, double *in_Q, double dt); } \ No newline at end of file diff --git a/openpilot/selfdrive/selfdrived/selfdrived.py b/openpilot/selfdrive/selfdrived/selfdrived.py index 751b3176c0..ab3d1b4e5f 100755 --- a/openpilot/selfdrive/selfdrived/selfdrived.py +++ b/openpilot/selfdrive/selfdrived/selfdrived.py @@ -1341,7 +1341,8 @@ class SelfdriveD: self.conditional_status = result.status self.conditional_result = result - def _decide_aol_axes(self, CS, intent, native): + def _decide_aol_axes(self, CS, intent, native, *, now_ns=0): + from openpilot.starpilot.car.gm.aol import physical_cancel_lateral_allowed return decide_axes( standard_lateral=self.active, standard_longitudinal=bool(self.enabled and self.CP.openpilotLongitudinalControl and not any(sample.seatbeltUnlatched for sample, _ in getattr(self, 'car_state_samples', ()))), @@ -1350,7 +1351,9 @@ class SelfdriveD: self.sm['extrinsicsCalibration'].calStatus == log.ExtrinsicsCalibration.Status.calibrated), no_entry=aol_no_entry(self.events.names, CS, paddle_only_cancel=self.nostalgia_paddle_cancel, allow_lateral_cancel=bool(intent is not None and intent.allowedLatch and intent.optionalSetRelease - and ev6_aol_qualified(self.CP, marked_only=True)), + and ev6_aol_qualified(self.CP, marked_only=True)) or + physical_cancel_lateral_allowed(self.CP, CS, intent, native, + source_ns=getattr(self, 'aol_car_state_log_ns', 0), now_ns=now_ns), cruise_main_required=getattr(self, 'aol_cruise_main_required', True), allow_below_engage_speed=bool(is_volt_ascm_longitudinal(self.CP) and not self.CP.flags & GMFlags.PEDAL_LONG)), @@ -1475,7 +1478,7 @@ class SelfdriveD: elif intent is not None and not intent.allowedLatch: self.aol_dm_lateral_inhibit = False previous = self.aol_axis_decision - requested = self._decide_aol_axes(CS, intent, native) + requested = self._decide_aol_axes(CS, intent, native, now_ns=now_ns) source_current = bool(intent is not None and getattr(self, 'conditional_car_state_valid', False) and CS.canValid and not CS.canTimeout) driver_override = bool(CS.brakePressed or CS.regenBraking or CS.gasPressed or @@ -1586,7 +1589,7 @@ class SelfdriveD: self.state_machine.soft_disable_timer > 0 and ET.SOFT_DISABLE not in self.state_machine.current_alert_types): self.state_machine.current_alert_types.append(ET.SOFT_DISABLE) - self.aol_axis_decision = self._decide_aol_axes(CS, intent, native) + self.aol_axis_decision = self._decide_aol_axes(CS, intent, native, now_ns=now_ns) if availability: self.aol_axis_decision = AxisDecision(desired_lateral=True, native_acknowledged=True) elif getattr(self, 'aol_availability_long_inhibit', False): diff --git a/openpilot/starpilot/aol/tests/test_gm_held_native.py b/openpilot/starpilot/aol/tests/test_gm_held_native.py new file mode 100644 index 0000000000..75c67b2834 --- /dev/null +++ b/openpilot/starpilot/aol/tests/test_gm_held_native.py @@ -0,0 +1,427 @@ +"""Real GM parser/Card sources with controlled native peers; no transport claim.""" +from dataclasses import replace +from types import SimpleNamespace +from unittest.mock import patch + +import pytest + +from opendbc.can import CANPacker +from opendbc.car import Bus +from opendbc.car.gm.bolt_cc import button_bytes +from opendbc.car.gm.gmcan import pedal_crc +from opendbc.car.gm.tests.test_bolt_cc import feed +from opendbc.car.gm.tests.test_bolt_pedal import params +from opendbc.car.gm.values import CAR, DBC, CruiseButtons +from openpilot.cereal import messaging +from openpilot.common.params import Params +from openpilot.common.prefix import OpenpilotPrefix +from openpilot.starpilot.aol.runtime import decide_axes +from openpilot.starpilot.aol.transport_pause import TransportPauseFeedback +from openpilot.starpilot.aol.wire import PandaSlot, SafetyState, encode_safety + +NOW = 10_000_000_000 + + +class Peers: + def __init__(self, messages): + self.messages = {m.which(): m for m in messages} + self.logMonoTime = {n: int(m.logMonoTime) for n, m in self.messages.items()} + self.seen = dict.fromkeys(self.messages, True) + self.valid = dict(self.seen) + self.alive = dict(self.seen) + + def __getitem__(self, name): + return getattr(self.messages[name], name) + + +def parse(card, now, gesture=None, counter=0): + packer = CANPacker(DBC[card.CP.carFingerprint][Bus.pt]) + _, packets = feed(SimpleNamespace(update=lambda _: None), packer, now, counter=counter, + active=False, speed=20., brake=gesture == 'brake', regen=gesture == 'paddle') + packets = [p for p in packets if p[0] not in (0x1E1, 0x1F5)] + packets += [packer.make_can_msg('BCMBlindSpotMonitor', 0, {}), + packer.make_can_msg('ECMPRDNL2', 0, {'PRNDL2': 6}), + (0x1E1, button_bytes(CruiseButtons.CANCEL if gesture == 'cancel' else CruiseButtons.UNPRESS, counter), 0)] + sensor = bytearray(packer.make_can_msg('GAS_SENSOR', 0, + {'INTERCEPTOR_GAS': 0., 'INTERCEPTOR_GAS2': 0., 'STATE': 0, 'COUNTER_PEDAL': counter})[1]) + sensor[5] = pedal_crc(sensor) + packets.append((0x201, bytes(sensor), 0)) + if now == NOW: + card.CI.update([(now - 1_000_000, packets)]) + cs = card.CI.update([(now, packets)]) + assert cs.canValid and not cs.canTimeout + assert cs.brakePressed == (gesture == 'brake') + assert cs.regenBraking == (gesture == 'paddle') + card._aol_can_observation = (cs, now, now, now) + return cs + + +def peers(cp, producer, now, *, controls=True, native=None, sequence=1, long_active=True): + config = cp.safetyConfigs[0] + if native is None: + slot = PandaSlot(0, 'gm-unit', config.safetyModel.raw, config.safetyParam, 32, True) + native = SafetyState(1, True, now, now + 200_000_000, config.safetyModel.raw, config.safetyParam, + True, True, True, True, 'gm-unit', 'gm-session', + sourcePandaStatesMonoTime=now, pandaInventory=(slot,)) + wire = messaging.new_message('aolSafetyWire', 0, valid=True, logMonoTime=native.observedMonoTime) + wire.aolSafetyWire = encode_safety(native) + pandas = messaging.new_message('pandaStates', 1, valid=True, logMonoTime=now) + p = pandas.pandaStates[0] + p.safetyModel, p.safetyParam, p.alternativeExperience = config.safetyModel, config.safetyParam, 32 + p.controlsAllowed = controls + axis = messaging.new_message('aolAxisState', valid=True, logMonoTime=now) + a = axis.aolAxisState + a.sessionId = a.faultSessionId = 'gm-session' + a.sequence, a.qualified, a.faultReason = sequence, True, 'none' + a.observedMonoTime, a.validUntilMonoTime, a.sourceCarStateMonoTime = now, now + 30_000_000, now + a.desiredLateral = a.lateralActive = a.nativeAcknowledged = True + a.desiredLongitudinal = a.longitudinalActive = long_active + a.intentProducerSessionId, a.intentIntegrityEpoch = producer, 1 + events = messaging.new_message('onroadEvents', 0, valid=True, logMonoTime=now) + return Peers([wire.as_reader(), pandas.as_reader(), axis.as_reader(), events.as_reader()]), native + + +def baseline(): + from openpilot.starpilot.aol.tests.test_gm import TestGmAol + settings = Params() + settings.put_bool('AlwaysOnLateral', True, block=True) + settings.put_bool('AlphaLongitudinalEnabled', True, block=True) + cp = params(CAR.CHEVROLET_BOLT_CC_2018_2021, pedal=True, camera=True) + card = TestGmAol.card(cp, settings) + cs = parse(card, NOW) + card.aol_card_intent.update(cs, fault_active=False, now_ns=NOW) + assert card.aol_card_intent.allowed_latch + sm, native = peers(card.CP, card.slc_producer_session, NOW) + feedback = TransportPauseFeedback(card.CP) + assert not feedback.observe(sm, card.CP, cs, NOW, latched=True, + intent_producer_session=card.slc_producer_session) + assert feedback.session == 'gm-session' and feedback.healthy_inventory + return card, feedback, native + + +@pytest.mark.parametrize('gesture', ['brake', 'paddle', 'cancel']) +def test_real_physical_withdrawal_retains_latch_with_held_long_wire(gesture): + with OpenpilotPrefix(): + card, feedback, native = baseline() + now = NOW + 10_000_000 + cs = parse(card, now, gesture, counter=1) + source = card.aol_gm_withdrawal_source(cs, now) + assert source == now + sm, _ = peers(card.CP, card.slc_producer_session, now, controls=False, native=native, sequence=2) + reset = feedback.observe(sm, card.CP, cs, now, latched=True, gm_withdrawal_source_ns=source, + intent_producer_session=card.slc_producer_session) + card.aol_card_intent.update(cs, fault_active=reset, now_ns=now) + assert not reset and not feedback.failed and card.aol_card_intent.allowed_latch + assert feedback.gm_withdrawal_ns == source + # The prior LONG wire and latest raw withdrawal are untouched. Ordinary + # runtime keeps LONG off even though accepted driver LAT intent survives. + intent = SimpleNamespace(allowedLatch=True, pauseLateral=False, pauseLongitudinal=False) + decision = decide_axes(standard_lateral=False, standard_longitudinal=False, intent=intent, + native=native, car_state=cs, initialized=True, model_ready=True, no_entry=False, + immediate_disable=False, dm_lockout=False, pause_brake_mps=5.) + assert decision.lateral_active and not decision.longitudinal_active + assert native.requestedLongitudinal and native.longitudinalAllowed + assert native.validUntilMonoTime == NOW + 200_000_000 + # Held and release samples retain one original occurrence; the actual + # native LAT-only acknowledgement ends the exception on the normal path. + for offset, physical in ((20_000_000, gesture), (30_000_000, None)): + later = NOW + offset + cs = parse(card, later, physical, counter=2) + sm, _ = peers(card.CP, card.slc_producer_session, later, controls=False, native=native, + sequence=offset // 10_000_000 + 1, long_active=False) + assert not feedback.observe(sm, card.CP, cs, later, latched=True, + gm_withdrawal_source_ns=card.aol_gm_withdrawal_source(cs, later), intent_producer_session=card.slc_producer_session) + assert feedback.gm_withdrawal_ns == source + lat_only = replace(native, observedMonoTime=NOW + 40_000_000, validUntilMonoTime=NOW + 240_000_000, + requestedLongitudinal=False, longitudinalAllowed=False, + pandaInventory=(replace(native.pandaInventory[0], controlsAllowed=False),)) + sm, _ = peers(card.CP, card.slc_producer_session, NOW + 40_000_000, controls=False, + native=lat_only, sequence=5, long_active=False) + assert not feedback.observe(sm, card.CP, cs, NOW + 40_000_000, latched=True, + intent_producer_session=card.slc_producer_session) + assert feedback.gm_withdrawal_ns == 0 + + +@pytest.mark.parametrize('fault', ['no_source', 'stale_source', 'future_source', 'producer', 'epoch', + 'session', 'serial', 'inventory', 'owner', 'config', 'rx_fault', 'heartbeat', 'lat_denied', 'no_lat', + 'native_expired', 'can_invalid', 'eps', 'event', 'axis_expired', 'sequence', 'main', + 'seatbelt', 'seatbelt_event', 'door', 'gear']) +def test_physical_withdrawal_keeps_identity_freshness_and_health_vetoes(fault): + with OpenpilotPrefix(): + card, feedback, native = baseline() + now = NOW + 10_000_000 + cs = parse(card, now, 'brake', counter=1) + source = card.aol_gm_withdrawal_source(cs, now) + if fault == 'no_source': + source = 0 + elif fault == 'stale_source': + source = now - 30_000_001 + elif fault == 'future_source': + source = now + 1 + elif fault == 'session': + native = replace(native, axisSessionId='other') + elif fault == 'serial': + native = replace(native, pandaSerial='other') + elif fault == 'inventory': + native = replace(native, pandaInventory=(replace(native.pandaInventory[0], hardwareSerial='other'),)) + elif fault == 'owner': + card.CP.alternativeExperience = 0 + elif fault == 'no_lat': + native = replace(native, requestedLateral=False) + elif fault == 'native_expired': + native = replace(native, validUntilMonoTime=now - 1) + elif fault == 'main': + cs.cruiseState.available = False + elif fault == 'lat_denied': + native = replace(native, lateralAllowed=False) + elif fault == 'can_invalid': + cs.canValid = False + elif fault == 'eps': + cs.steerFaultPermanent = True + elif fault == 'seatbelt': + cs.seatbeltUnlatched = True + elif fault == 'door': + cs.doorOpen = True + elif fault == 'gear': + from opendbc.car.structs import car + cs.gearShifter = car.CarState.GearShifter.park + sm, _ = peers(card.CP, card.slc_producer_session, now, controls=False, native=native, sequence=2) + axis = sm.messages['aolAxisState'].as_builder() + pandas = sm.messages['pandaStates'].as_builder() + events = sm.messages['onroadEvents'].as_builder() + if fault == 'producer': + axis.aolAxisState.intentProducerSessionId = 'other' + elif fault == 'epoch': + axis.aolAxisState.intentIntegrityEpoch = 2 + elif fault == 'sequence': + axis.aolAxisState.sequence = 1 + elif fault == 'axis_expired': + axis.aolAxisState.validUntilMonoTime = now - 1 + elif fault == 'config': + pandas.pandaStates[0].safetyParam ^= 1 + elif fault == 'rx_fault': + pandas.pandaStates[0].safetyRxChecksInvalid = True + elif fault == 'heartbeat': + pandas.pandaStates[0].heartbeatLost = True + elif fault == 'seatbelt_event': + events.init('onroadEvents', 1) + events.onroadEvents[0].name, events.onroadEvents[0].softDisable = 'seatbeltNotLatched', True + elif fault == 'event': + events.init('onroadEvents', 1) + events.onroadEvents[0].name, events.onroadEvents[0].immediateDisable = 'controlsMismatch', True + sm = Peers([sm.messages['aolSafetyWire'], pandas.as_reader(), axis.as_reader(), events.as_reader()]) + assert feedback.observe(sm, card.CP, cs, now, latched=True, gm_withdrawal_source_ns=source, + intent_producer_session=card.slc_producer_session) + assert feedback.failed + + +def test_held_and_duplicate_samples_cannot_extend_withdrawal_deadline(): + with OpenpilotPrefix(): + card, feedback, native = baseline() + occurrence = NOW + 10_000_000 + for tick in range(1, 23): + now = NOW + tick * 10_000_000 + cs = parse(card, now, 'brake', counter=tick % 4) + if tick > 1: + native = replace(native, observedMonoTime=now, validUntilMonoTime=now + 200_000_000) + sm, _ = peers(card.CP, card.slc_producer_session, now, controls=False, native=native, + sequence=tick + 1, long_active=tick == 1) + source = card.aol_gm_withdrawal_source(cs, now) + for _ in range(2): + failed = feedback.observe(sm, card.CP, cs, now, latched=True, gm_withdrawal_source_ns=source, + intent_producer_session=card.slc_producer_session) + assert failed == (tick == 22) + assert feedback.gm_withdrawal_ns == occurrence + assert feedback.failed + + +@pytest.mark.parametrize('fault', ['different_cs', 'old_receipt', 'future_receipt', 'stale_parser', 'future_parser']) +def test_physical_receipt_requires_same_parsed_batch_and_separate_clock_freshness(fault): + with OpenpilotPrefix(): + card, _, _ = baseline() + now = NOW + 10_000_000 + cs = parse(card, now, 'brake', counter=1) + assert card.aol_gm_withdrawal_source(cs, now) == now + if fault == 'different_cs': + card._aol_can_observation = (cs.as_reader().as_builder(), now, now, now) + elif fault == 'old_receipt': + card._aol_can_observation = (cs, now - 30_000_001, now, now) + elif fault == 'future_receipt': + card._aol_can_observation = (cs, now + 1, now, now) + elif fault == 'stale_parser': + card._aol_can_observation = (cs, now, now + 30_000_001, now + 30_000_001) + elif fault == 'future_parser': + card._aol_can_observation = (cs, now, now - 1, now) + assert card.aol_gm_withdrawal_source(cs, now) == 0 + + +@pytest.mark.parametrize('owner', ['qualified', 'unmarked', 'wrong_profile']) +def test_actual_card_state_update_captures_boot_clock_only_for_physical_gm_owner(owner): + # Stop immediately after the production clock gate. The real joined Card.step + # transport cases separately exercise installation/consumption of the receipt. + class ClockBoundaryReached(Exception): + pass + + def stop_after_clock(*_): + raise ClockBoundaryReached + + with OpenpilotPrefix(): + card, _, _ = baseline() + cs = parse(card, NOW + 10_000_000, 'brake', counter=1) + if owner == 'unmarked': + card.CP.alternativeExperience = 0 + elif owner == 'wrong_profile': + card.CP.flags = 0 + with patch('openpilot.selfdrive.car.card.messaging.drain_sock_raw', return_value=[]), \ + patch('openpilot.selfdrive.car.card.can_capnp_to_list', return_value=[(NOW + 10_000_000, [])]), \ + patch('openpilot.selfdrive.car.card.time.monotonic_ns', return_value=NOW + 10_000_000), \ + patch('openpilot.selfdrive.car.card.time.clock_gettime_ns', return_value=NOW + 10_000_000) as clock, \ + patch.object(card.CI, 'update', return_value=cs), \ + patch.object(card, 'observe_ioniq6_long_authority', side_effect=stop_after_clock): + with pytest.raises(ClockBoundaryReached): + card.state_update() + if owner == 'qualified': + from openpilot.selfdrive.car.card import time + clock.assert_called_once_with(time.CLOCK_BOOTTIME) + else: + clock.assert_not_called() + + +@pytest.mark.parametrize('fault', [None, 'unmarked', 'wrong_owner', 'unlatched', 'unarmed', 'source_mismatch', + 'source_expired', 'future_source', 'no_cancel', 'can_invalid', 'eps', 'no_native', 'lat_denied', 'native_inventory']) +def test_gm_cancel_exempts_only_current_armed_lateral_no_entry(fault): + from openpilot.starpilot.aol.wire import IntentState + from openpilot.starpilot.car.gm.aol import physical_cancel_lateral_allowed + from openpilot.selfdrive.selfdrived.events import ET, EVENTS, EventName + from openpilot.starpilot.nostalgia import aol_no_entry + with OpenpilotPrefix(): + card, _, native = baseline() + now = NOW + 10_000_000 + cs = parse(card, now, 'cancel', counter=1) + intent = IntentState(card.slc_producer_session, 2, now, now, now + 30_000_000, True, False, False, True, True) + source = now + if fault == 'unmarked': + card.CP.alternativeExperience = 0 + elif fault == 'wrong_owner': + card.CP.flags = 0 + elif fault == 'unlatched': + intent = replace(intent, allowedLatch=False) + elif fault == 'unarmed': + intent = replace(intent, lateralArmed=False) + elif fault == 'source_mismatch': + source -= 1 + elif fault == 'source_expired': + now += 30_000_001 + elif fault == 'future_source': + source += 1 + elif fault == 'no_cancel': + cs.buttonEvents = [] + elif fault == 'can_invalid': + cs.canValid = False + elif fault == 'eps': + cs.steerFaultPermanent = True + elif fault == 'no_native': + native = None + elif fault == 'lat_denied': + native = replace(native, lateralAllowed=False) + elif fault == 'native_inventory': + native = replace(native, pandaInventory=(replace(native.pandaInventory[0], hardwareSerial='other'),)) + allowed = physical_cancel_lateral_allowed(card.CP, cs, intent, native, source_ns=source, now_ns=now) + assert allowed == (fault is None) + assert aol_no_entry([EventName.buttonCancel], cs, paddle_only_cancel=False) + assert aol_no_entry([EventName.buttonCancel], cs, paddle_only_cancel=False, allow_lateral_cancel=allowed) == (fault is not None) + assert ET.USER_DISABLE in EVENTS[EventName.buttonCancel] + assert aol_no_entry([EventName.buttonCancel, EventName.doorOpen], cs, + paddle_only_cancel=False, allow_lateral_cancel=allowed) + + +def test_native_lat_only_after_long_belt_loss_keeps_saved_lateral_intent(): + from openpilot.starpilot.aol.intent import disarming_fault + from openpilot.starpilot.nostalgia import aol_no_entry + from openpilot.selfdrive.selfdrived.events import Events, EventName + with OpenpilotPrefix(): + card, feedback, native = baseline() + for tick, unlatched in ((1, True), (2, True), (3, False)): + now = NOW + tick * 10_000_000 + cs = parse(card, now, counter=tick) + cs.seatbeltUnlatched = unlatched + native = replace(native, observedMonoTime=now, validUntilMonoTime=now + 200_000_000, + requestedLongitudinal=False, longitudinalAllowed=False, + pandaInventory=(replace(native.pandaInventory[0], controlsAllowed=False),)) + sm, _ = peers(card.CP, card.slc_producer_session, now, controls=False, native=native, + sequence=tick + 1, long_active=False) + events = Events() + if unlatched: + events.add(EventName.seatbeltNotLatched) + wire_events = sm.messages['onroadEvents'].as_builder() + wire_events.onroadEvents = events.to_msg() + sm = Peers([sm.messages['aolSafetyWire'], sm.messages['pandaStates'], + sm.messages['aolAxisState'], wire_events.as_reader()]) + reset = feedback.observe(sm, card.CP, cs, now, latched=True, + intent_producer_session=card.slc_producer_session) + card.aol_card_intent.update(cs, fault_active=reset or disarming_fault(events.to_msg(), cs), now_ns=now) + assert not reset and not feedback.failed and card.aol_card_intent.allowed_latch + allowed, pause_lat, pause_long = card.aol_card_intent.output(cs) + decision = decide_axes(standard_lateral=True, standard_longitudinal=unlatched, + intent=SimpleNamespace(allowedLatch=allowed, pauseLateral=pause_lat, pauseLongitudinal=pause_long), + native=native, car_state=cs, initialized=True, model_ready=True, + no_entry=aol_no_entry(events.names, cs, paddle_only_cancel=False), + immediate_disable=False, dm_lockout=False, pause_brake_mps=0.) + assert decision.lateral_active + assert not decision.desired_longitudinal and not decision.longitudinal_active + assert feedback.gm_withdrawal_ns == 0 + + +@pytest.mark.parametrize('fault', [None, 'stale_source', 'future_source', 'future_observation', + 'excessive_lease', 'expired', 'no_expiry']) +def test_real_card_published_cancel_intent_preserves_producer_lease_and_freshness(fault): + from openpilot.starpilot.aol.runtime import current_intent + from openpilot.starpilot.aol.wire import decode_intent + from openpilot.starpilot.car.gm.aol import physical_cancel_lateral_allowed + + class PublishedCarState(Exception): + pass + + with OpenpilotPrefix(): + card, _, native = baseline() + now = NOW + 10_000_000 + cs = parse(card, now, 'cancel', counter=1) + published = {} + real_new_message = messaging.new_message + + def stamped_message(service=None, size=None, **kwargs): + return real_new_message(service, size, **({'logMonoTime': now} | kwargs)) + + def capture(service, message): + wire = message if isinstance(message, bytes) else message.to_bytes() + published[service] = messaging.log_from_bytes(wire) + if service == 'carState': + raise PublishedCarState + + with patch('openpilot.selfdrive.car.card.messaging.new_message', side_effect=stamped_message), \ + patch.object(card.pm, 'send', side_effect=capture): + with pytest.raises(PublishedCarState): + card.state_publish(cs, None) + source = int(published['carState'].logMonoTime) + cs = published['carState'].carState + intent = decode_intent(published['aolIntentWire'].aolIntentWire) + assert intent is not None + assert intent.carStateLogMonoTime == intent.observedMonoTime == source == now + assert intent.validUntilMonoTime - intent.observedMonoTime == 200_000_000 + admitted = current_intent(Peers([published['aolIntentWire']]), car_state_ns=source, now_ns=now) + assert admitted == intent + # Faults modify only the negative cases after the actual producer boundary. + if fault == 'stale_source': + now += 30_000_001 + elif fault == 'future_source': + source += 1 + elif fault == 'future_observation': + intent = replace(intent, observedMonoTime=now + 1) + elif fault == 'excessive_lease': + intent = replace(intent, validUntilMonoTime=intent.observedMonoTime + 200_000_001) + elif fault == 'expired': + intent = replace(intent, validUntilMonoTime=now - 1) + elif fault == 'no_expiry': + intent = replace(intent, validUntilMonoTime=0) + assert physical_cancel_lateral_allowed(card.CP, cs, intent, native, + source_ns=source, now_ns=now) == (fault is None) diff --git a/openpilot/starpilot/aol/transport_pause.py b/openpilot/starpilot/aol/transport_pause.py index cc309c8ef1..7bbe96f5b6 100644 --- a/openpilot/starpilot/aol/transport_pause.py +++ b/openpilot/starpilot/aol/transport_pause.py @@ -222,6 +222,7 @@ class TransportPauseFeedback: self.longitudinal_cancel_ns = 0 self.last_cancel_source_ns = 0 self.honda_brake_ns = 0 + self.gm_withdrawal_ns = 0 self.retention_qualified = False self.retention_pending = False self.retention_event_ns = 0 @@ -498,7 +499,7 @@ class TransportPauseFeedback: self.awaiting = True return True - def observe(self, sm, cp, cs, now_ns, *, latched=True, cancel_source_ns=0, brake_source_ns=0, intent_producer_session=''): + def observe(self, sm, cp, cs, now_ns, *, latched=True, cancel_source_ns=0, brake_source_ns=0, gm_withdrawal_source_ns=0, intent_producer_session=''): self.qualified = False self.awaiting = False self.retention_qualified = False @@ -534,6 +535,17 @@ class TransportPauseFeedback: self.healthy_native_ns = int(brake_native.observedMonoTime) self.sequence, self.signature = int(axis.sequence), signature return False + if current and continuity and (gm_withdrawal_source_ns or self.gm_withdrawal_ns): + from openpilot.starpilot.car.gm.aol import retained_physical_longitudinal_intent + gm_native = retained_physical_longitudinal_intent(self, sm, cp, cs, axis, now_ns, + latched=latched, source_ns=gm_withdrawal_source_ns, producer=intent_producer_session) + if gm_native is not None: + # Existing GM intent only; independent runtime/native TX still owns + # both axes and every original source/native/output deadline. + self.healthy_feedback_ns = stamp + self.healthy_native_ns = int(gm_native.observedMonoTime) + self.sequence, self.signature = int(axis.sequence), signature + return False if self._source_availability_retention(sm, cp, cs, axis, stamp, now_ns, latched=latched, continuity=continuity, producer=intent_producer_session, signature=signature): self.sequence, self.signature = int(axis.sequence), signature @@ -586,6 +598,8 @@ class TransportPauseFeedback: self.signature = signature return False if transport_healthy: + if not latched or native is not None and not native.requestedLongitudinal: + self.gm_withdrawal_ns = 0 if native is not None and not native.requestedLongitudinal: self.honda_brake_ns = 0 if (not latched or native is not None and not native.requestedLongitudinal or diff --git a/openpilot/starpilot/car/gm/aol.py b/openpilot/starpilot/car/gm/aol.py index c267ab446c..a9f312dcaa 100644 --- a/openpilot/starpilot/car/gm/aol.py +++ b/openpilot/starpilot/car/gm/aol.py @@ -91,3 +91,98 @@ def intent_disarming_fault(cp, events, state, **context): if qualified_gm(cp) and camera_acc_pedal_profile(cp) is None and is_volt_ascm_longitudinal(cp): events = [event for event in events if event.name != log.OnroadEvent.EventName.accFaulted] return disarming_fault(events, state, **context) + + +def physical_longitudinal_withdrawal_source(cp, cs, parser, observation, now_ns) -> int: + """Bind a Bolt pedal-owner withdrawal to its parsed CAN and local receipt.""" + from opendbc.car.gm.values import CruiseButtons, is_bolt_present_no_acc_pedal_profile + from opendbc.car.structs import car + try: + if (not qualified_gm(cp) or not is_bolt_present_no_acc_pedal_profile(cp) or + int(cp.alternativeExperience) != GM_AOL_ALTERNATIVE_EXPERIENCE or + observation is None or observation[0] is not cs or not cs.canValid or cs.canTimeout): + return 0 + fields = [] + if cs.brakePressed and parser.vl['ECMEngineStatus']['BrakePressed']: + fields.append(('ECMEngineStatus', 'BrakePressed')) + if cs.regenBraking and parser.vl['EBCMRegenPaddle']['RegenPaddle']: + fields.append(('EBCMRegenPaddle', 'RegenPaddle')) + if (parser.vl['ASCMSteeringButton']['ACCButtons'] == CruiseButtons.CANCEL and + any(e.type == car.CarState.ButtonEvent.Type.cancel and e.pressed for e in cs.buttonEvents)): + fields.append(('ASCMSteeringButton', 'ACCButtons')) + _, received_ns, can_source_ns, boot_ns = observation + if not fields or not 0 < received_ns <= now_ns or now_ns - received_ns > 30_000_000: + return 0 + # Parser/CAN batch use BOOTTIME. The fixed deadline uses the original + # local MONOTONIC receipt; neither clock is converted or restamped. + stamps = [int(parser.ts_nanos[message][signal]) for message, signal in fields] + if not all(0 < stamp <= can_source_ns <= boot_ns and boot_ns - stamp <= 30_000_000 and + can_source_ns - stamp <= 30_000_000 for stamp in stamps): + return 0 + return received_ns + except (AttributeError, KeyError, IndexError, TypeError, ValueError): + return 0 + + +def retained_physical_longitudinal_intent(feedback, sm, cp, cs, axis, now_ns, *, latched, source_ns, producer): + """Retain accepted LAT intent through a bounded physical LONG withdrawal.""" + from opendbc.car.gm.values import is_bolt_present_no_acc_pedal_profile + from opendbc.car.structs import car + from openpilot.starpilot.aol.runtime import AXIS_MAX_AGE_NS, SAFETY_MAX_AGE_NS + from openpilot.starpilot.aol.transport_pause import independent_lateral_health + occurrence = feedback.gm_withdrawal_ns or source_ns + if (not qualified_gm(cp) or not is_bolt_present_no_acc_pedal_profile(cp) or + int(cp.alternativeExperience) != GM_AOL_ALTERNATIVE_EXPERIENCE or + not latched or feedback.failed or feedback.paused or feedback.pending_event or + feedback.retention_started_ns or not feedback.session or str(axis.sessionId) != feedback.session or + not feedback.healthy_feedback_ns or not 0 <= now_ns - feedback.healthy_feedback_ns <= AXIS_MAX_AGE_NS or + not 0 < occurrence <= now_ns or now_ns - occurrence > SAFETY_MAX_AGE_NS or + not feedback.gm_withdrawal_ns and now_ns - occurrence > AXIS_MAX_AGE_NS or + not producer or producer != feedback.availability_producer or + str(axis.intentProducerSessionId) != producer or int(axis.intentIntegrityEpoch) != feedback.availability_epoch or + cs.accFaulted or cs.seatbeltUnlatched or cs.doorOpen or not cs.cruiseState.available or + cs.gearShifter not in (car.CarState.GearShifter.drive, car.CarState.GearShifter.low, + car.CarState.GearShifter.sport, car.CarState.GearShifter.brake) or + str(axis.faultReason) != 'none' or not axis.desiredLateral or not axis.lateralActive or + not axis.nativeAcknowledged or + not 0 < axis.sourceCarStateMonoTime <= axis.observedMonoTime <= now_ns or + now_ns - axis.sourceCarStateMonoTime > AXIS_MAX_AGE_NS): + return None + event_ns = int(sm.logMonoTime['onroadEvents']) + if (not sm.seen['onroadEvents'] or not sm.valid['onroadEvents'] or not sm.alive['onroadEvents'] or + not 0 < event_ns <= now_ns or now_ns - event_ns > 1_500_000_000 or + any(e.immediateDisable or e.softDisable for e in sm['onroadEvents'])): + return None + native = independent_lateral_health(sm, cp, cs, feedback.session, now_ns) + if (native is None or not native.pandaInventory or not native.requestedLongitudinal or + not any(not p.controlsAllowed for p in sm['pandaStates']) or + native.observedMonoTime < feedback.healthy_native_ns or + (native.pandaSerial, tuple(p.hardwareSerial for p in native.pandaInventory)) != feedback.healthy_inventory): + return None + # One occurrence spans the held native request. Held/released samples and + # duplicate Card calls cannot renew it; output/native leases remain original. + feedback.gm_withdrawal_ns = occurrence + return native + + +def physical_cancel_lateral_allowed(cp, cs, intent, native, *, source_ns, now_ns) -> bool: + """Exact armed Bolt Cancel removes only the lateral NO_ENTRY restriction.""" + from opendbc.car.gm.values import is_bolt_present_no_acc_pedal_profile + from opendbc.car.structs import car + from openpilot.starpilot.aol.runtime import AXIS_MAX_AGE_NS, SAFETY_MAX_AGE_NS, native_inventory_matches_cp + try: + return bool(qualified_gm(cp) and is_bolt_present_no_acc_pedal_profile(cp) and + int(cp.alternativeExperience) == GM_AOL_ALTERNATIVE_EXPERIENCE and + intent is not None and intent.settingsQualified and intent.allowedLatch and intent.lateralArmed and + intent.producerSessionId and intent.carStateLogMonoTime == source_ns and + 0 < source_ns <= intent.observedMonoTime <= now_ns <= intent.validUntilMonoTime and + now_ns - source_ns <= AXIS_MAX_AGE_NS and + # Card declares a 200ms wire lease; admission and this source remain 30ms fresh. + intent.validUntilMonoTime - intent.observedMonoTime <= SAFETY_MAX_AGE_NS and + cs.canValid and not cs.canTimeout and not cs.steerFaultTemporary and not cs.steerFaultPermanent and + any(e.type == car.CarState.ButtonEvent.Type.cancel for e in cs.buttonEvents) and + native is not None and native.requestedLateral and native.lateralAllowed and + native.pandaInventory and native_inventory_matches_cp(native, cp) and + 0 < native.observedMonoTime <= now_ns <= native.validUntilMonoTime) + except (AttributeError, KeyError, IndexError, TypeError, ValueError): + return False diff --git a/panda/board/obj/body_h7.bin.signed b/panda/board/obj/body_h7.bin.signed index 725e18e3fe67596810ba66cc20351fcbeb3287d4..b19719179f1630dbc74a024b4d97b7de1fdc9f53 100644 GIT binary patch delta 162 zcmV;T0A2r#>I{tP41k0Iv;qtm2sLIoH8?XeVTTkL0=Enlqf-7#iEg0I{tP41k0Iv;qtm2sdUjG-P8nVuutM0=Ey+A zQfR&L7$AR^9|Hxdjns<&o!g2`e8HmpWa*>gGQH-?Wu@j7f2h1vo6`^{e;t%$^cx`Y Q#_1<_KKmVA;%i|6-~4e&DF6Tf diff --git a/panda/board/obj/bootstub.body_h7.bin b/panda/board/obj/bootstub.body_h7.bin index f9ecb10e55710811cbfcbed971c8fad8b595ba6e..5ba870d5c54e221c77aa8317721a2c13354d48af 100755 GIT binary patch delta 21 dcmaD5_aJV=W-SiWG)q$pW23~)yS0|G003q<2wDID delta 21 dcmaD5_aJV=W-Si$G$WIgWYeV0yS0|G003zs2($nI diff --git a/panda/board/obj/bootstub.panda.bin b/panda/board/obj/bootstub.panda.bin index 1d8f074ce96ddfe48696a2a04421c48240be5060..25b636d0a749e64dd00d9afac15661f9531bf78f 100755 GIT binary patch delta 21 ccmewm_91LTr5cB6nx(0Qu~FjYMz!}W0AoxDH~;_u delta 21 ccmewm_91LTr5cBMnvqFLvT4%hMz!}W0A@A_k^lez diff --git a/panda/board/obj/bootstub.panda_h7.bin b/panda/board/obj/bootstub.panda_h7.bin index 127789a7618c482a83024603adc1be948fa44d0b..56c5b7045a86d42498f62686e728568ecf9c87c0 100755 GIT binary patch delta 23 ecmeB}!q_o|af6`?hiRInsfDpo;$};i^Q-_{`Ui6W delta 23 ecmeB}!q_o|af6`?hk2TjNlLP5(q>DS^Q-_~N2{UNJyh<@ zPgYJ{s_2~T*>hj>SkOJAfW>zIG0jBz&NnE9M#rjQx`=p3f8ksGfIGcw0x(TWUTtI1 z*cT`uK&>Dj;z=|puHOl??2cLBj_?{CLAlLp^SD2TFn$== O!8Au8GvSFXHvu93cT1}P delta 160 zcmV;R0AK&CqYSL041lx&T=WPxW->HnV>M!jWb^^IWb^{a9DfJkF#w)V#_9=o;1vEq z%YiXKd&*VwO=&_?H85Hv29#OZ*w%kxa1bE)BAjv|SU&8_Y3FI3QcP$H>@5XgV&iSF zGxfT%9hGkLuw5785Hg5K>d}yUhPxgf2;fB&S|oBHzF?Dc0yJi@-itEF!8)07^6sH> OSfppQM=psi0s*l@L`TB_ diff --git a/panda/board/obj/panda_h7.bin.signed b/panda/board/obj/panda_h7.bin.signed index 279db5057110a82f724f4a7a0e590a96af528d1a..2749ed948184abb4fbf4ac5818882e80acdf1e15 100644 GIT binary patch delta 161 zcmV;S0ABx`?hKsn41k0Iv;veD2sLIoH8?XeVTYU-0;il810R1X;lNgDKmN|8Pw4I8 zed<;aL*61B)WVUw{}e-v-{cPw8XyELU3%B-Ia$xId$`*uH(N~V=Qd)uC!qDWlXRm+ zwU@6qb(=-ai&2yrpZT$ArBvphU>1{u((YEf3O0-F<&t)H+c;lLchBXT;9StTJ~k)V Py`866j{*w06pR7XfHzI} delta 161 zcmV;S0ABx`?hKsn41k0Iv;veD2sdUjG-P8nVuzd;0;il810R2;3FIRcn>v9_G-`US z-7m$-M(zlO$R4JOBJ1`^LNAQMZ5bN{UaB&e=aIxfI9KJNWNT6|F@7?zz+4MFs5`dR zLO@^5*?v;>?@o9}K8MCYmGKVRePWRh%_%D`VMprOAJ9(7fUgDS&^ttpA_MmJje9(` POLebi)k~Y5<3|C`oVZAW diff --git a/panda/board/obj/version b/panda/board/obj/version index db470d6cf5..363bac627f 100644 --- a/panda/board/obj/version +++ b/panda/board/obj/version @@ -1 +1 @@ -DEV-7f24dc5b-P92eb5651-DEBUG \ No newline at end of file +DEV-5f95832a-P92eb5651-DEBUG \ No newline at end of file diff --git a/prebuilt.json b/prebuilt.json index 40e14353be..d193716b64 100644 --- a/prebuilt.json +++ b/prebuilt.json @@ -1 +1 @@ -{"protected_inventory_sha256": "311c3d2052bcf23f706cf30ea41b17ded44053d04e045c5fcd2fa76666bf7705", "schema_version": 1} +{"protected_inventory_sha256": "2dd7ad9f6f5f266e5b92c8f11e91983ffbc663ad544207e17f5a9f77fe0e6e0c", "schema_version": 1}