From a0950855e09447da70de528dc00f81059e514cd8 Mon Sep 17 00:00:00 2001 From: firestar5683 <168790843+firestar5683@users.noreply.github.com> Date: Sun, 4 Oct 2026 20:33:21 -0500 Subject: [PATCH] Build --- .../locationd/models/generated/car.cpp | 684 +++--- .../locationd/models/generated/car.h | 42 +- .../locationd/models/generated/libcar.so | Bin 24120528 -> 24120528 bytes .../locationd/models/generated/libpose.so | Bin 20605632 -> 20605624 bytes .../locationd/models/generated/pose.cpp | 1938 ++++++++--------- .../locationd/models/generated/pose.h | 26 +- panda/board/obj/body_h7.bin.signed | Bin 181572 -> 181572 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 172344 -> 172344 bytes panda/board/obj/panda_h7.bin.signed | Bin 182280 -> 182280 bytes panda/board/obj/version | 2 +- prebuilt.json | 2 +- 15 files changed, 1348 insertions(+), 1348 deletions(-) diff --git a/openpilot/selfdrive/locationd/models/generated/car.cpp b/openpilot/selfdrive/locationd/models/generated/car.cpp index b459a81eb8..88ffce511c 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_191040875433637227) { - out_191040875433637227[0] = delta_x[0] + nom_x[0]; - out_191040875433637227[1] = delta_x[1] + nom_x[1]; - out_191040875433637227[2] = delta_x[2] + nom_x[2]; - out_191040875433637227[3] = delta_x[3] + nom_x[3]; - out_191040875433637227[4] = delta_x[4] + nom_x[4]; - out_191040875433637227[5] = delta_x[5] + nom_x[5]; - out_191040875433637227[6] = delta_x[6] + nom_x[6]; - out_191040875433637227[7] = delta_x[7] + nom_x[7]; - out_191040875433637227[8] = delta_x[8] + nom_x[8]; +void err_fun(double *nom_x, double *delta_x, double *out_2204053027494663001) { + out_2204053027494663001[0] = delta_x[0] + nom_x[0]; + out_2204053027494663001[1] = delta_x[1] + nom_x[1]; + out_2204053027494663001[2] = delta_x[2] + nom_x[2]; + out_2204053027494663001[3] = delta_x[3] + nom_x[3]; + out_2204053027494663001[4] = delta_x[4] + nom_x[4]; + out_2204053027494663001[5] = delta_x[5] + nom_x[5]; + out_2204053027494663001[6] = delta_x[6] + nom_x[6]; + out_2204053027494663001[7] = delta_x[7] + nom_x[7]; + out_2204053027494663001[8] = delta_x[8] + nom_x[8]; } -void inv_err_fun(double *nom_x, double *true_x, double *out_449478399145670770) { - out_449478399145670770[0] = -nom_x[0] + true_x[0]; - out_449478399145670770[1] = -nom_x[1] + true_x[1]; - out_449478399145670770[2] = -nom_x[2] + true_x[2]; - out_449478399145670770[3] = -nom_x[3] + true_x[3]; - out_449478399145670770[4] = -nom_x[4] + true_x[4]; - out_449478399145670770[5] = -nom_x[5] + true_x[5]; - out_449478399145670770[6] = -nom_x[6] + true_x[6]; - out_449478399145670770[7] = -nom_x[7] + true_x[7]; - out_449478399145670770[8] = -nom_x[8] + true_x[8]; +void inv_err_fun(double *nom_x, double *true_x, double *out_2041279983635365065) { + out_2041279983635365065[0] = -nom_x[0] + true_x[0]; + out_2041279983635365065[1] = -nom_x[1] + true_x[1]; + out_2041279983635365065[2] = -nom_x[2] + true_x[2]; + out_2041279983635365065[3] = -nom_x[3] + true_x[3]; + out_2041279983635365065[4] = -nom_x[4] + true_x[4]; + out_2041279983635365065[5] = -nom_x[5] + true_x[5]; + out_2041279983635365065[6] = -nom_x[6] + true_x[6]; + out_2041279983635365065[7] = -nom_x[7] + true_x[7]; + out_2041279983635365065[8] = -nom_x[8] + true_x[8]; } -void H_mod_fun(double *state, double *out_2217112053847292599) { - out_2217112053847292599[0] = 1.0; - out_2217112053847292599[1] = 0.0; - out_2217112053847292599[2] = 0.0; - out_2217112053847292599[3] = 0.0; - out_2217112053847292599[4] = 0.0; - out_2217112053847292599[5] = 0.0; - out_2217112053847292599[6] = 0.0; - out_2217112053847292599[7] = 0.0; - out_2217112053847292599[8] = 0.0; - out_2217112053847292599[9] = 0.0; - out_2217112053847292599[10] = 1.0; - out_2217112053847292599[11] = 0.0; - out_2217112053847292599[12] = 0.0; - out_2217112053847292599[13] = 0.0; - out_2217112053847292599[14] = 0.0; - out_2217112053847292599[15] = 0.0; - out_2217112053847292599[16] = 0.0; - out_2217112053847292599[17] = 0.0; - out_2217112053847292599[18] = 0.0; - out_2217112053847292599[19] = 0.0; - out_2217112053847292599[20] = 1.0; - out_2217112053847292599[21] = 0.0; - out_2217112053847292599[22] = 0.0; - out_2217112053847292599[23] = 0.0; - out_2217112053847292599[24] = 0.0; - out_2217112053847292599[25] = 0.0; - out_2217112053847292599[26] = 0.0; - out_2217112053847292599[27] = 0.0; - out_2217112053847292599[28] = 0.0; - out_2217112053847292599[29] = 0.0; - out_2217112053847292599[30] = 1.0; - out_2217112053847292599[31] = 0.0; - out_2217112053847292599[32] = 0.0; - out_2217112053847292599[33] = 0.0; - out_2217112053847292599[34] = 0.0; - out_2217112053847292599[35] = 0.0; - out_2217112053847292599[36] = 0.0; - out_2217112053847292599[37] = 0.0; - out_2217112053847292599[38] = 0.0; - out_2217112053847292599[39] = 0.0; - out_2217112053847292599[40] = 1.0; - out_2217112053847292599[41] = 0.0; - out_2217112053847292599[42] = 0.0; - out_2217112053847292599[43] = 0.0; - out_2217112053847292599[44] = 0.0; - out_2217112053847292599[45] = 0.0; - out_2217112053847292599[46] = 0.0; - out_2217112053847292599[47] = 0.0; - out_2217112053847292599[48] = 0.0; - out_2217112053847292599[49] = 0.0; - out_2217112053847292599[50] = 1.0; - out_2217112053847292599[51] = 0.0; - out_2217112053847292599[52] = 0.0; - out_2217112053847292599[53] = 0.0; - out_2217112053847292599[54] = 0.0; - out_2217112053847292599[55] = 0.0; - out_2217112053847292599[56] = 0.0; - out_2217112053847292599[57] = 0.0; - out_2217112053847292599[58] = 0.0; - out_2217112053847292599[59] = 0.0; - out_2217112053847292599[60] = 1.0; - out_2217112053847292599[61] = 0.0; - out_2217112053847292599[62] = 0.0; - out_2217112053847292599[63] = 0.0; - out_2217112053847292599[64] = 0.0; - out_2217112053847292599[65] = 0.0; - out_2217112053847292599[66] = 0.0; - out_2217112053847292599[67] = 0.0; - out_2217112053847292599[68] = 0.0; - out_2217112053847292599[69] = 0.0; - out_2217112053847292599[70] = 1.0; - out_2217112053847292599[71] = 0.0; - out_2217112053847292599[72] = 0.0; - out_2217112053847292599[73] = 0.0; - out_2217112053847292599[74] = 0.0; - out_2217112053847292599[75] = 0.0; - out_2217112053847292599[76] = 0.0; - out_2217112053847292599[77] = 0.0; - out_2217112053847292599[78] = 0.0; - out_2217112053847292599[79] = 0.0; - out_2217112053847292599[80] = 1.0; +void H_mod_fun(double *state, double *out_7031372799249316450) { + out_7031372799249316450[0] = 1.0; + out_7031372799249316450[1] = 0.0; + out_7031372799249316450[2] = 0.0; + out_7031372799249316450[3] = 0.0; + out_7031372799249316450[4] = 0.0; + out_7031372799249316450[5] = 0.0; + out_7031372799249316450[6] = 0.0; + out_7031372799249316450[7] = 0.0; + out_7031372799249316450[8] = 0.0; + out_7031372799249316450[9] = 0.0; + out_7031372799249316450[10] = 1.0; + out_7031372799249316450[11] = 0.0; + out_7031372799249316450[12] = 0.0; + out_7031372799249316450[13] = 0.0; + out_7031372799249316450[14] = 0.0; + out_7031372799249316450[15] = 0.0; + out_7031372799249316450[16] = 0.0; + out_7031372799249316450[17] = 0.0; + out_7031372799249316450[18] = 0.0; + out_7031372799249316450[19] = 0.0; + out_7031372799249316450[20] = 1.0; + out_7031372799249316450[21] = 0.0; + out_7031372799249316450[22] = 0.0; + out_7031372799249316450[23] = 0.0; + out_7031372799249316450[24] = 0.0; + out_7031372799249316450[25] = 0.0; + out_7031372799249316450[26] = 0.0; + out_7031372799249316450[27] = 0.0; + out_7031372799249316450[28] = 0.0; + out_7031372799249316450[29] = 0.0; + out_7031372799249316450[30] = 1.0; + out_7031372799249316450[31] = 0.0; + out_7031372799249316450[32] = 0.0; + out_7031372799249316450[33] = 0.0; + out_7031372799249316450[34] = 0.0; + out_7031372799249316450[35] = 0.0; + out_7031372799249316450[36] = 0.0; + out_7031372799249316450[37] = 0.0; + out_7031372799249316450[38] = 0.0; + out_7031372799249316450[39] = 0.0; + out_7031372799249316450[40] = 1.0; + out_7031372799249316450[41] = 0.0; + out_7031372799249316450[42] = 0.0; + out_7031372799249316450[43] = 0.0; + out_7031372799249316450[44] = 0.0; + out_7031372799249316450[45] = 0.0; + out_7031372799249316450[46] = 0.0; + out_7031372799249316450[47] = 0.0; + out_7031372799249316450[48] = 0.0; + out_7031372799249316450[49] = 0.0; + out_7031372799249316450[50] = 1.0; + out_7031372799249316450[51] = 0.0; + out_7031372799249316450[52] = 0.0; + out_7031372799249316450[53] = 0.0; + out_7031372799249316450[54] = 0.0; + out_7031372799249316450[55] = 0.0; + out_7031372799249316450[56] = 0.0; + out_7031372799249316450[57] = 0.0; + out_7031372799249316450[58] = 0.0; + out_7031372799249316450[59] = 0.0; + out_7031372799249316450[60] = 1.0; + out_7031372799249316450[61] = 0.0; + out_7031372799249316450[62] = 0.0; + out_7031372799249316450[63] = 0.0; + out_7031372799249316450[64] = 0.0; + out_7031372799249316450[65] = 0.0; + out_7031372799249316450[66] = 0.0; + out_7031372799249316450[67] = 0.0; + out_7031372799249316450[68] = 0.0; + out_7031372799249316450[69] = 0.0; + out_7031372799249316450[70] = 1.0; + out_7031372799249316450[71] = 0.0; + out_7031372799249316450[72] = 0.0; + out_7031372799249316450[73] = 0.0; + out_7031372799249316450[74] = 0.0; + out_7031372799249316450[75] = 0.0; + out_7031372799249316450[76] = 0.0; + out_7031372799249316450[77] = 0.0; + out_7031372799249316450[78] = 0.0; + out_7031372799249316450[79] = 0.0; + out_7031372799249316450[80] = 1.0; } -void f_fun(double *state, double dt, double *out_5425352922863285243) { - out_5425352922863285243[0] = state[0]; - out_5425352922863285243[1] = state[1]; - out_5425352922863285243[2] = state[2]; - out_5425352922863285243[3] = state[3]; - out_5425352922863285243[4] = state[4]; - out_5425352922863285243[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_5425352922863285243[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_5425352922863285243[7] = state[7]; - out_5425352922863285243[8] = state[8]; +void f_fun(double *state, double dt, double *out_1116747486686820994) { + out_1116747486686820994[0] = state[0]; + out_1116747486686820994[1] = state[1]; + out_1116747486686820994[2] = state[2]; + out_1116747486686820994[3] = state[3]; + out_1116747486686820994[4] = state[4]; + out_1116747486686820994[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_1116747486686820994[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_1116747486686820994[7] = state[7]; + out_1116747486686820994[8] = state[8]; } -void F_fun(double *state, double dt, double *out_5183523293737892740) { - out_5183523293737892740[0] = 1; - out_5183523293737892740[1] = 0; - out_5183523293737892740[2] = 0; - out_5183523293737892740[3] = 0; - out_5183523293737892740[4] = 0; - out_5183523293737892740[5] = 0; - out_5183523293737892740[6] = 0; - out_5183523293737892740[7] = 0; - out_5183523293737892740[8] = 0; - out_5183523293737892740[9] = 0; - out_5183523293737892740[10] = 1; - out_5183523293737892740[11] = 0; - out_5183523293737892740[12] = 0; - out_5183523293737892740[13] = 0; - out_5183523293737892740[14] = 0; - out_5183523293737892740[15] = 0; - out_5183523293737892740[16] = 0; - out_5183523293737892740[17] = 0; - out_5183523293737892740[18] = 0; - out_5183523293737892740[19] = 0; - out_5183523293737892740[20] = 1; - out_5183523293737892740[21] = 0; - out_5183523293737892740[22] = 0; - out_5183523293737892740[23] = 0; - out_5183523293737892740[24] = 0; - out_5183523293737892740[25] = 0; - out_5183523293737892740[26] = 0; - out_5183523293737892740[27] = 0; - out_5183523293737892740[28] = 0; - out_5183523293737892740[29] = 0; - out_5183523293737892740[30] = 1; - out_5183523293737892740[31] = 0; - out_5183523293737892740[32] = 0; - out_5183523293737892740[33] = 0; - out_5183523293737892740[34] = 0; - out_5183523293737892740[35] = 0; - out_5183523293737892740[36] = 0; - out_5183523293737892740[37] = 0; - out_5183523293737892740[38] = 0; - out_5183523293737892740[39] = 0; - out_5183523293737892740[40] = 1; - out_5183523293737892740[41] = 0; - out_5183523293737892740[42] = 0; - out_5183523293737892740[43] = 0; - out_5183523293737892740[44] = 0; - out_5183523293737892740[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_5183523293737892740[46] = -dt*stiffness_front*(-state[2] - state[3] + state[7])*state[0]/(mass*pow(state[1], 2)); - out_5183523293737892740[47] = -dt*stiffness_front*state[0]/(mass*state[1]); - out_5183523293737892740[48] = -dt*stiffness_front*state[0]/(mass*state[1]); - out_5183523293737892740[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_5183523293737892740[50] = dt*(-stiffness_front*state[0] - stiffness_rear*state[0])/(mass*state[4]) + 1; - out_5183523293737892740[51] = dt*(-state[4] + (-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])/(mass*state[4])); - out_5183523293737892740[52] = dt*stiffness_front*state[0]/(mass*state[1]); - out_5183523293737892740[53] = -9.8100000000000005*dt; - out_5183523293737892740[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_5183523293737892740[55] = -center_to_front*dt*stiffness_front*(-state[2] - state[3] + state[7])*state[0]/(rotational_inertia*pow(state[1], 2)); - out_5183523293737892740[56] = -center_to_front*dt*stiffness_front*state[0]/(rotational_inertia*state[1]); - out_5183523293737892740[57] = -center_to_front*dt*stiffness_front*state[0]/(rotational_inertia*state[1]); - out_5183523293737892740[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_5183523293737892740[59] = dt*(-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])/(rotational_inertia*state[4]); - out_5183523293737892740[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_5183523293737892740[61] = center_to_front*dt*stiffness_front*state[0]/(rotational_inertia*state[1]); - out_5183523293737892740[62] = 0; - out_5183523293737892740[63] = 0; - out_5183523293737892740[64] = 0; - out_5183523293737892740[65] = 0; - out_5183523293737892740[66] = 0; - out_5183523293737892740[67] = 0; - out_5183523293737892740[68] = 0; - out_5183523293737892740[69] = 0; - out_5183523293737892740[70] = 1; - out_5183523293737892740[71] = 0; - out_5183523293737892740[72] = 0; - out_5183523293737892740[73] = 0; - out_5183523293737892740[74] = 0; - out_5183523293737892740[75] = 0; - out_5183523293737892740[76] = 0; - out_5183523293737892740[77] = 0; - out_5183523293737892740[78] = 0; - out_5183523293737892740[79] = 0; - out_5183523293737892740[80] = 1; +void F_fun(double *state, double dt, double *out_4929085835885003775) { + out_4929085835885003775[0] = 1; + out_4929085835885003775[1] = 0; + out_4929085835885003775[2] = 0; + out_4929085835885003775[3] = 0; + out_4929085835885003775[4] = 0; + out_4929085835885003775[5] = 0; + out_4929085835885003775[6] = 0; + out_4929085835885003775[7] = 0; + out_4929085835885003775[8] = 0; + out_4929085835885003775[9] = 0; + out_4929085835885003775[10] = 1; + out_4929085835885003775[11] = 0; + out_4929085835885003775[12] = 0; + out_4929085835885003775[13] = 0; + out_4929085835885003775[14] = 0; + out_4929085835885003775[15] = 0; + out_4929085835885003775[16] = 0; + out_4929085835885003775[17] = 0; + out_4929085835885003775[18] = 0; + out_4929085835885003775[19] = 0; + out_4929085835885003775[20] = 1; + out_4929085835885003775[21] = 0; + out_4929085835885003775[22] = 0; + out_4929085835885003775[23] = 0; + out_4929085835885003775[24] = 0; + out_4929085835885003775[25] = 0; + out_4929085835885003775[26] = 0; + out_4929085835885003775[27] = 0; + out_4929085835885003775[28] = 0; + out_4929085835885003775[29] = 0; + out_4929085835885003775[30] = 1; + out_4929085835885003775[31] = 0; + out_4929085835885003775[32] = 0; + out_4929085835885003775[33] = 0; + out_4929085835885003775[34] = 0; + out_4929085835885003775[35] = 0; + out_4929085835885003775[36] = 0; + out_4929085835885003775[37] = 0; + out_4929085835885003775[38] = 0; + out_4929085835885003775[39] = 0; + out_4929085835885003775[40] = 1; + out_4929085835885003775[41] = 0; + out_4929085835885003775[42] = 0; + out_4929085835885003775[43] = 0; + out_4929085835885003775[44] = 0; + out_4929085835885003775[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_4929085835885003775[46] = -dt*stiffness_front*(-state[2] - state[3] + state[7])*state[0]/(mass*pow(state[1], 2)); + out_4929085835885003775[47] = -dt*stiffness_front*state[0]/(mass*state[1]); + out_4929085835885003775[48] = -dt*stiffness_front*state[0]/(mass*state[1]); + out_4929085835885003775[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_4929085835885003775[50] = dt*(-stiffness_front*state[0] - stiffness_rear*state[0])/(mass*state[4]) + 1; + out_4929085835885003775[51] = dt*(-state[4] + (-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])/(mass*state[4])); + out_4929085835885003775[52] = dt*stiffness_front*state[0]/(mass*state[1]); + out_4929085835885003775[53] = -9.8100000000000005*dt; + out_4929085835885003775[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_4929085835885003775[55] = -center_to_front*dt*stiffness_front*(-state[2] - state[3] + state[7])*state[0]/(rotational_inertia*pow(state[1], 2)); + out_4929085835885003775[56] = -center_to_front*dt*stiffness_front*state[0]/(rotational_inertia*state[1]); + out_4929085835885003775[57] = -center_to_front*dt*stiffness_front*state[0]/(rotational_inertia*state[1]); + out_4929085835885003775[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_4929085835885003775[59] = dt*(-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])/(rotational_inertia*state[4]); + out_4929085835885003775[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_4929085835885003775[61] = center_to_front*dt*stiffness_front*state[0]/(rotational_inertia*state[1]); + out_4929085835885003775[62] = 0; + out_4929085835885003775[63] = 0; + out_4929085835885003775[64] = 0; + out_4929085835885003775[65] = 0; + out_4929085835885003775[66] = 0; + out_4929085835885003775[67] = 0; + out_4929085835885003775[68] = 0; + out_4929085835885003775[69] = 0; + out_4929085835885003775[70] = 1; + out_4929085835885003775[71] = 0; + out_4929085835885003775[72] = 0; + out_4929085835885003775[73] = 0; + out_4929085835885003775[74] = 0; + out_4929085835885003775[75] = 0; + out_4929085835885003775[76] = 0; + out_4929085835885003775[77] = 0; + out_4929085835885003775[78] = 0; + out_4929085835885003775[79] = 0; + out_4929085835885003775[80] = 1; } -void h_25(double *state, double *unused, double *out_1323322140775861569) { - out_1323322140775861569[0] = state[6]; +void h_25(double *state, double *unused, double *out_3988698768583113995) { + out_3988698768583113995[0] = state[6]; } -void H_25(double *state, double *unused, double *out_2722446496047589311) { - out_2722446496047589311[0] = 0; - out_2722446496047589311[1] = 0; - out_2722446496047589311[2] = 0; - out_2722446496047589311[3] = 0; - out_2722446496047589311[4] = 0; - out_2722446496047589311[5] = 0; - out_2722446496047589311[6] = 1; - out_2722446496047589311[7] = 0; - out_2722446496047589311[8] = 0; +void H_25(double *state, double *unused, double *out_3508392149259824773) { + out_3508392149259824773[0] = 0; + out_3508392149259824773[1] = 0; + out_3508392149259824773[2] = 0; + out_3508392149259824773[3] = 0; + out_3508392149259824773[4] = 0; + out_3508392149259824773[5] = 0; + out_3508392149259824773[6] = 1; + out_3508392149259824773[7] = 0; + out_3508392149259824773[8] = 0; } -void h_24(double *state, double *unused, double *out_9087948729282653086) { - out_9087948729282653086[0] = state[4]; - out_9087948729282653086[1] = state[5]; +void h_24(double *state, double *unused, double *out_4767470784617198679) { + out_4767470784617198679[0] = state[4]; + out_4767470784617198679[1] = state[5]; } -void H_24(double *state, double *unused, double *out_3567443104831284710) { - out_3567443104831284710[0] = 0; - out_3567443104831284710[1] = 0; - out_3567443104831284710[2] = 0; - out_3567443104831284710[3] = 0; - out_3567443104831284710[4] = 1; - out_3567443104831284710[5] = 0; - out_3567443104831284710[6] = 0; - out_3567443104831284710[7] = 0; - out_3567443104831284710[8] = 0; - out_3567443104831284710[9] = 0; - out_3567443104831284710[10] = 0; - out_3567443104831284710[11] = 0; - out_3567443104831284710[12] = 0; - out_3567443104831284710[13] = 0; - out_3567443104831284710[14] = 1; - out_3567443104831284710[15] = 0; - out_3567443104831284710[16] = 0; - out_3567443104831284710[17] = 0; +void H_24(double *state, double *unused, double *out_8254901476226333807) { + out_8254901476226333807[0] = 0; + out_8254901476226333807[1] = 0; + out_8254901476226333807[2] = 0; + out_8254901476226333807[3] = 0; + out_8254901476226333807[4] = 1; + out_8254901476226333807[5] = 0; + out_8254901476226333807[6] = 0; + out_8254901476226333807[7] = 0; + out_8254901476226333807[8] = 0; + out_8254901476226333807[9] = 0; + out_8254901476226333807[10] = 0; + out_8254901476226333807[11] = 0; + out_8254901476226333807[12] = 0; + out_8254901476226333807[13] = 0; + out_8254901476226333807[14] = 1; + out_8254901476226333807[15] = 0; + out_8254901476226333807[16] = 0; + out_8254901476226333807[17] = 0; } -void h_30(double *state, double *unused, double *out_1374282254885888156) { - out_1374282254885888156[0] = state[4]; +void h_30(double *state, double *unused, double *out_7626148296837136345) { + out_7626148296837136345[0] = state[4]; } -void H_30(double *state, double *unused, double *out_8807607236170345550) { - out_8807607236170345550[0] = 0; - out_8807607236170345550[1] = 0; - out_8807607236170345550[2] = 0; - out_8807607236170345550[3] = 0; - out_8807607236170345550[4] = 1; - out_8807607236170345550[5] = 0; - out_8807607236170345550[6] = 0; - out_8807607236170345550[7] = 0; - out_8807607236170345550[8] = 0; +void H_30(double *state, double *unused, double *out_3408298192231791982) { + out_3408298192231791982[0] = 0; + out_3408298192231791982[1] = 0; + out_3408298192231791982[2] = 0; + out_3408298192231791982[3] = 0; + out_3408298192231791982[4] = 1; + out_3408298192231791982[5] = 0; + out_3408298192231791982[6] = 0; + out_3408298192231791982[7] = 0; + out_3408298192231791982[8] = 0; } -void h_26(double *state, double *unused, double *out_2542026055962029893) { - out_2542026055962029893[0] = state[7]; +void h_26(double *state, double *unused, double *out_2624475029176290700) { + out_2624475029176290700[0] = state[7]; } -void H_26(double *state, double *unused, double *out_1019056822826466913) { - out_1019056822826466913[0] = 0; - out_1019056822826466913[1] = 0; - out_1019056822826466913[2] = 0; - out_1019056822826466913[3] = 0; - out_1019056822826466913[4] = 0; - out_1019056822826466913[5] = 0; - out_1019056822826466913[6] = 0; - out_1019056822826466913[7] = 1; - out_1019056822826466913[8] = 0; +void H_26(double *state, double *unused, double *out_7249895468133880997) { + out_7249895468133880997[0] = 0; + out_7249895468133880997[1] = 0; + out_7249895468133880997[2] = 0; + out_7249895468133880997[3] = 0; + out_7249895468133880997[4] = 0; + out_7249895468133880997[5] = 0; + out_7249895468133880997[6] = 0; + out_7249895468133880997[7] = 1; + out_7249895468133880997[8] = 0; } -void h_27(double *state, double *unused, double *out_1281083180032836082) { - out_1281083180032836082[0] = state[3]; +void h_27(double *state, double *unused, double *out_572425478934043979) { + out_572425478934043979[0] = state[3]; } -void H_27(double *state, double *unused, double *out_7464373525738781155) { - out_7464373525738781155[0] = 0; - out_7464373525738781155[1] = 0; - out_7464373525738781155[2] = 0; - out_7464373525738781155[3] = 1; - out_7464373525738781155[4] = 0; - out_7464373525738781155[5] = 0; - out_7464373525738781155[6] = 0; - out_7464373525738781155[7] = 0; - out_7464373525738781155[8] = 0; +void H_27(double *state, double *unused, double *out_1233534880431367071) { + out_1233534880431367071[0] = 0; + out_1233534880431367071[1] = 0; + out_1233534880431367071[2] = 0; + out_1233534880431367071[3] = 1; + out_1233534880431367071[4] = 0; + out_1233534880431367071[5] = 0; + out_1233534880431367071[6] = 0; + out_1233534880431367071[7] = 0; + out_1233534880431367071[8] = 0; } -void h_29(double *state, double *unused, double *out_1438269848383965227) { - out_1438269848383965227[0] = state[1]; +void h_29(double *state, double *unused, double *out_5818922509211569626) { + out_5818922509211569626[0] = state[1]; } -void H_29(double *state, double *unused, double *out_8297375891855953366) { - out_8297375891855953366[0] = 0; - out_8297375891855953366[1] = 1; - out_8297375891855953366[2] = 0; - out_8297375891855953366[3] = 0; - out_8297375891855953366[4] = 0; - out_8297375891855953366[5] = 0; - out_8297375891855953366[6] = 0; - out_8297375891855953366[7] = 0; - out_8297375891855953366[8] = 0; +void H_29(double *state, double *unused, double *out_3918529536546184166) { + out_3918529536546184166[0] = 0; + out_3918529536546184166[1] = 1; + out_3918529536546184166[2] = 0; + out_3918529536546184166[3] = 0; + out_3918529536546184166[4] = 0; + out_3918529536546184166[5] = 0; + out_3918529536546184166[6] = 0; + out_3918529536546184166[7] = 0; + out_3918529536546184166[8] = 0; } -void h_28(double *state, double *unused, double *out_677767295356358565) { - out_677767295356358565[0] = state[0]; +void h_28(double *state, double *unused, double *out_4389954518747249253) { + out_4389954518747249253[0] = state[0]; } -void H_28(double *state, double *unused, double *out_668611781799699548) { - out_668611781799699548[0] = 1; - out_668611781799699548[1] = 0; - out_668611781799699548[2] = 0; - out_668611781799699548[3] = 0; - out_668611781799699548[4] = 0; - out_668611781799699548[5] = 0; - out_668611781799699548[6] = 0; - out_668611781799699548[7] = 0; - out_668611781799699548[8] = 0; +void H_28(double *state, double *unused, double *out_5562226863507714536) { + out_5562226863507714536[0] = 1; + out_5562226863507714536[1] = 0; + out_5562226863507714536[2] = 0; + out_5562226863507714536[3] = 0; + out_5562226863507714536[4] = 0; + out_5562226863507714536[5] = 0; + out_5562226863507714536[6] = 0; + out_5562226863507714536[7] = 0; + out_5562226863507714536[8] = 0; } -void h_31(double *state, double *unused, double *out_2538361335652640083) { - out_2538361335652640083[0] = state[8]; +void h_31(double *state, double *unused, double *out_3713504706298608106) { + out_3713504706298608106[0] = state[8]; } -void H_31(double *state, double *unused, double *out_2753092457924549739) { - out_2753092457924549739[0] = 0; - out_2753092457924549739[1] = 0; - out_2753092457924549739[2] = 0; - out_2753092457924549739[3] = 0; - out_2753092457924549739[4] = 0; - out_2753092457924549739[5] = 0; - out_2753092457924549739[6] = 0; - out_2753092457924549739[7] = 0; - out_2753092457924549739[8] = 1; +void H_31(double *state, double *unused, double *out_3477746187382864345) { + out_3477746187382864345[0] = 0; + out_3477746187382864345[1] = 0; + out_3477746187382864345[2] = 0; + out_3477746187382864345[3] = 0; + out_3477746187382864345[4] = 0; + out_3477746187382864345[5] = 0; + out_3477746187382864345[6] = 0; + out_3477746187382864345[7] = 0; + out_3477746187382864345[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_191040875433637227) { - err_fun(nom_x, delta_x, out_191040875433637227); +void car_err_fun(double *nom_x, double *delta_x, double *out_2204053027494663001) { + err_fun(nom_x, delta_x, out_2204053027494663001); } -void car_inv_err_fun(double *nom_x, double *true_x, double *out_449478399145670770) { - inv_err_fun(nom_x, true_x, out_449478399145670770); +void car_inv_err_fun(double *nom_x, double *true_x, double *out_2041279983635365065) { + inv_err_fun(nom_x, true_x, out_2041279983635365065); } -void car_H_mod_fun(double *state, double *out_2217112053847292599) { - H_mod_fun(state, out_2217112053847292599); +void car_H_mod_fun(double *state, double *out_7031372799249316450) { + H_mod_fun(state, out_7031372799249316450); } -void car_f_fun(double *state, double dt, double *out_5425352922863285243) { - f_fun(state, dt, out_5425352922863285243); +void car_f_fun(double *state, double dt, double *out_1116747486686820994) { + f_fun(state, dt, out_1116747486686820994); } -void car_F_fun(double *state, double dt, double *out_5183523293737892740) { - F_fun(state, dt, out_5183523293737892740); +void car_F_fun(double *state, double dt, double *out_4929085835885003775) { + F_fun(state, dt, out_4929085835885003775); } -void car_h_25(double *state, double *unused, double *out_1323322140775861569) { - h_25(state, unused, out_1323322140775861569); +void car_h_25(double *state, double *unused, double *out_3988698768583113995) { + h_25(state, unused, out_3988698768583113995); } -void car_H_25(double *state, double *unused, double *out_2722446496047589311) { - H_25(state, unused, out_2722446496047589311); +void car_H_25(double *state, double *unused, double *out_3508392149259824773) { + H_25(state, unused, out_3508392149259824773); } -void car_h_24(double *state, double *unused, double *out_9087948729282653086) { - h_24(state, unused, out_9087948729282653086); +void car_h_24(double *state, double *unused, double *out_4767470784617198679) { + h_24(state, unused, out_4767470784617198679); } -void car_H_24(double *state, double *unused, double *out_3567443104831284710) { - H_24(state, unused, out_3567443104831284710); +void car_H_24(double *state, double *unused, double *out_8254901476226333807) { + H_24(state, unused, out_8254901476226333807); } -void car_h_30(double *state, double *unused, double *out_1374282254885888156) { - h_30(state, unused, out_1374282254885888156); +void car_h_30(double *state, double *unused, double *out_7626148296837136345) { + h_30(state, unused, out_7626148296837136345); } -void car_H_30(double *state, double *unused, double *out_8807607236170345550) { - H_30(state, unused, out_8807607236170345550); +void car_H_30(double *state, double *unused, double *out_3408298192231791982) { + H_30(state, unused, out_3408298192231791982); } -void car_h_26(double *state, double *unused, double *out_2542026055962029893) { - h_26(state, unused, out_2542026055962029893); +void car_h_26(double *state, double *unused, double *out_2624475029176290700) { + h_26(state, unused, out_2624475029176290700); } -void car_H_26(double *state, double *unused, double *out_1019056822826466913) { - H_26(state, unused, out_1019056822826466913); +void car_H_26(double *state, double *unused, double *out_7249895468133880997) { + H_26(state, unused, out_7249895468133880997); } -void car_h_27(double *state, double *unused, double *out_1281083180032836082) { - h_27(state, unused, out_1281083180032836082); +void car_h_27(double *state, double *unused, double *out_572425478934043979) { + h_27(state, unused, out_572425478934043979); } -void car_H_27(double *state, double *unused, double *out_7464373525738781155) { - H_27(state, unused, out_7464373525738781155); +void car_H_27(double *state, double *unused, double *out_1233534880431367071) { + H_27(state, unused, out_1233534880431367071); } -void car_h_29(double *state, double *unused, double *out_1438269848383965227) { - h_29(state, unused, out_1438269848383965227); +void car_h_29(double *state, double *unused, double *out_5818922509211569626) { + h_29(state, unused, out_5818922509211569626); } -void car_H_29(double *state, double *unused, double *out_8297375891855953366) { - H_29(state, unused, out_8297375891855953366); +void car_H_29(double *state, double *unused, double *out_3918529536546184166) { + H_29(state, unused, out_3918529536546184166); } -void car_h_28(double *state, double *unused, double *out_677767295356358565) { - h_28(state, unused, out_677767295356358565); +void car_h_28(double *state, double *unused, double *out_4389954518747249253) { + h_28(state, unused, out_4389954518747249253); } -void car_H_28(double *state, double *unused, double *out_668611781799699548) { - H_28(state, unused, out_668611781799699548); +void car_H_28(double *state, double *unused, double *out_5562226863507714536) { + H_28(state, unused, out_5562226863507714536); } -void car_h_31(double *state, double *unused, double *out_2538361335652640083) { - h_31(state, unused, out_2538361335652640083); +void car_h_31(double *state, double *unused, double *out_3713504706298608106) { + h_31(state, unused, out_3713504706298608106); } -void car_H_31(double *state, double *unused, double *out_2753092457924549739) { - H_31(state, unused, out_2753092457924549739); +void car_H_31(double *state, double *unused, double *out_3477746187382864345) { + H_31(state, unused, out_3477746187382864345); } 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 e8e655b7ae..2a9f834416 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_191040875433637227); -void car_inv_err_fun(double *nom_x, double *true_x, double *out_449478399145670770); -void car_H_mod_fun(double *state, double *out_2217112053847292599); -void car_f_fun(double *state, double dt, double *out_5425352922863285243); -void car_F_fun(double *state, double dt, double *out_5183523293737892740); -void car_h_25(double *state, double *unused, double *out_1323322140775861569); -void car_H_25(double *state, double *unused, double *out_2722446496047589311); -void car_h_24(double *state, double *unused, double *out_9087948729282653086); -void car_H_24(double *state, double *unused, double *out_3567443104831284710); -void car_h_30(double *state, double *unused, double *out_1374282254885888156); -void car_H_30(double *state, double *unused, double *out_8807607236170345550); -void car_h_26(double *state, double *unused, double *out_2542026055962029893); -void car_H_26(double *state, double *unused, double *out_1019056822826466913); -void car_h_27(double *state, double *unused, double *out_1281083180032836082); -void car_H_27(double *state, double *unused, double *out_7464373525738781155); -void car_h_29(double *state, double *unused, double *out_1438269848383965227); -void car_H_29(double *state, double *unused, double *out_8297375891855953366); -void car_h_28(double *state, double *unused, double *out_677767295356358565); -void car_H_28(double *state, double *unused, double *out_668611781799699548); -void car_h_31(double *state, double *unused, double *out_2538361335652640083); -void car_H_31(double *state, double *unused, double *out_2753092457924549739); +void car_err_fun(double *nom_x, double *delta_x, double *out_2204053027494663001); +void car_inv_err_fun(double *nom_x, double *true_x, double *out_2041279983635365065); +void car_H_mod_fun(double *state, double *out_7031372799249316450); +void car_f_fun(double *state, double dt, double *out_1116747486686820994); +void car_F_fun(double *state, double dt, double *out_4929085835885003775); +void car_h_25(double *state, double *unused, double *out_3988698768583113995); +void car_H_25(double *state, double *unused, double *out_3508392149259824773); +void car_h_24(double *state, double *unused, double *out_4767470784617198679); +void car_H_24(double *state, double *unused, double *out_8254901476226333807); +void car_h_30(double *state, double *unused, double *out_7626148296837136345); +void car_H_30(double *state, double *unused, double *out_3408298192231791982); +void car_h_26(double *state, double *unused, double *out_2624475029176290700); +void car_H_26(double *state, double *unused, double *out_7249895468133880997); +void car_h_27(double *state, double *unused, double *out_572425478934043979); +void car_H_27(double *state, double *unused, double *out_1233534880431367071); +void car_h_29(double *state, double *unused, double *out_5818922509211569626); +void car_H_29(double *state, double *unused, double *out_3918529536546184166); +void car_h_28(double *state, double *unused, double *out_4389954518747249253); +void car_H_28(double *state, double *unused, double *out_5562226863507714536); +void car_h_31(double *state, double *unused, double *out_3713504706298608106); +void car_H_31(double *state, double *unused, double *out_3477746187382864345); 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 12bcef9855bfb9501b103dad5af014c5fa183906..28a491bf9adb87b3aff9b76b191bb58699f4d32c 100755 GIT binary patch delta 16594 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 delta 16614 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 LdgS|?@xlK9z84YD diff --git a/openpilot/selfdrive/locationd/models/generated/libpose.so b/openpilot/selfdrive/locationd/models/generated/libpose.so index e81bbcb5f50b2b64c07febbe25fe4f946242fbdc..2f67e91607b4ea5d3e35508418f13009c515ef70 100755 GIT binary patch delta 34110 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
-C>ON@wA1VgZ-9j!f!Iopq(t?Q2QvL+N(b>%*wt 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⪼F_1etD44hd@>3XiuT8^VtzYO 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 o4psi3B#sItKacZ5>Ca&Ex$ #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_8386835163844872263) { - err_fun(nom_x, delta_x, out_8386835163844872263); +void pose_err_fun(double *nom_x, double *delta_x, double *out_7675941765646048454) { + err_fun(nom_x, delta_x, out_7675941765646048454); } -void pose_inv_err_fun(double *nom_x, double *true_x, double *out_5826204590882848019) { - inv_err_fun(nom_x, true_x, out_5826204590882848019); +void pose_inv_err_fun(double *nom_x, double *true_x, double *out_6578985106349638079) { + inv_err_fun(nom_x, true_x, out_6578985106349638079); } -void pose_H_mod_fun(double *state, double *out_7521593534267777079) { - H_mod_fun(state, out_7521593534267777079); +void pose_H_mod_fun(double *state, double *out_8249219982215908455) { + H_mod_fun(state, out_8249219982215908455); } -void pose_f_fun(double *state, double dt, double *out_8190127916652503129) { - f_fun(state, dt, out_8190127916652503129); +void pose_f_fun(double *state, double dt, double *out_741196485394149917) { + f_fun(state, dt, out_741196485394149917); } -void pose_F_fun(double *state, double dt, double *out_8302830792992532360) { - F_fun(state, dt, out_8302830792992532360); +void pose_F_fun(double *state, double dt, double *out_914245573923806659) { + F_fun(state, dt, out_914245573923806659); } -void pose_h_4(double *state, double *unused, double *out_6664200415740758039) { - h_4(state, unused, out_6664200415740758039); +void pose_h_4(double *state, double *unused, double *out_1661592600804563205) { + h_4(state, unused, out_1661592600804563205); } -void pose_H_4(double *state, double *unused, double *out_5772632154402693802) { - H_4(state, unused, out_5772632154402693802); +void pose_H_4(double *state, double *unused, double *out_3634592945286592091) { + H_4(state, unused, out_3634592945286592091); } -void pose_h_10(double *state, double *unused, double *out_2232580687525306632) { - h_10(state, unused, out_2232580687525306632); +void pose_h_10(double *state, double *unused, double *out_1540829144479980375) { + h_10(state, unused, out_1540829144479980375); } -void pose_H_10(double *state, double *unused, double *out_1994505413045679835) { - H_10(state, unused, out_1994505413045679835); +void pose_H_10(double *state, double *unused, double *out_3859318150895892325) { + H_10(state, unused, out_3859318150895892325); } -void pose_h_13(double *state, double *unused, double *out_1739439411373720736) { - h_13(state, unused, out_1739439411373720736); +void pose_h_13(double *state, double *unused, double *out_1494548337638663963) { + h_13(state, unused, out_1494548337638663963); } -void pose_H_13(double *state, double *unused, double *out_2560358329070361001) { - H_13(state, unused, out_2560358329070361001); +void pose_H_13(double *state, double *unused, double *out_422319119954259290) { + H_13(state, unused, out_422319119954259290); } -void pose_h_14(double *state, double *unused, double *out_2162487226046509469) { - h_14(state, unused, out_2162487226046509469); +void pose_h_14(double *state, double *unused, double *out_4998597365434596125) { + h_14(state, unused, out_4998597365434596125); } -void pose_H_14(double *state, double *unused, double *out_1809391298063209273) { - H_14(state, unused, out_1809391298063209273); +void pose_H_14(double *state, double *unused, double *out_328647911052892438) { + H_14(state, unused, out_328647911052892438); } 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 2d2b3dc2b7..480fb69893 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_8386835163844872263); -void pose_inv_err_fun(double *nom_x, double *true_x, double *out_5826204590882848019); -void pose_H_mod_fun(double *state, double *out_7521593534267777079); -void pose_f_fun(double *state, double dt, double *out_8190127916652503129); -void pose_F_fun(double *state, double dt, double *out_8302830792992532360); -void pose_h_4(double *state, double *unused, double *out_6664200415740758039); -void pose_H_4(double *state, double *unused, double *out_5772632154402693802); -void pose_h_10(double *state, double *unused, double *out_2232580687525306632); -void pose_H_10(double *state, double *unused, double *out_1994505413045679835); -void pose_h_13(double *state, double *unused, double *out_1739439411373720736); -void pose_H_13(double *state, double *unused, double *out_2560358329070361001); -void pose_h_14(double *state, double *unused, double *out_2162487226046509469); -void pose_H_14(double *state, double *unused, double *out_1809391298063209273); +void pose_err_fun(double *nom_x, double *delta_x, double *out_7675941765646048454); +void pose_inv_err_fun(double *nom_x, double *true_x, double *out_6578985106349638079); +void pose_H_mod_fun(double *state, double *out_8249219982215908455); +void pose_f_fun(double *state, double dt, double *out_741196485394149917); +void pose_F_fun(double *state, double dt, double *out_914245573923806659); +void pose_h_4(double *state, double *unused, double *out_1661592600804563205); +void pose_H_4(double *state, double *unused, double *out_3634592945286592091); +void pose_h_10(double *state, double *unused, double *out_1540829144479980375); +void pose_H_10(double *state, double *unused, double *out_3859318150895892325); +void pose_h_13(double *state, double *unused, double *out_1494548337638663963); +void pose_H_13(double *state, double *unused, double *out_422319119954259290); +void pose_h_14(double *state, double *unused, double *out_4998597365434596125); +void pose_H_14(double *state, double *unused, double *out_328647911052892438); void pose_predict(double *in_x, double *in_P, double *in_Q, double dt); } \ No newline at end of file diff --git a/panda/board/obj/body_h7.bin.signed b/panda/board/obj/body_h7.bin.signed index 7cd9da3eb9d845852058d19260a922e31b75360c..f3df37c24ca34a034c310a1fb76bd19da4841010 100644 GIT binary patch delta 160 zcmV;R0AK&aiVMVw3xKo%Y@i4t<#$sr?kL zBA7QfhL!LRx`4wFOaB;7^LucsnVi(p`{45Ck#6GrC?ogODp(TVVkdU&$FBk-v{iSX5lQ2+n{ diff --git a/panda/board/obj/bootstub.panda_h7.bin b/panda/board/obj/bootstub.panda_h7.bin index 7305462369225489565825d5476bd8027e62653f..e73c7b82288bf74095af1c39b2f9543c5c393293 100755 GIT binary patch delta 23 ecmeB}!q_o|af6`?hlz=SiAAEZ!DdUB^Q-__c?UEA delta 23 ecmeB}!q_o|af6`?N1~CLfl*?j@n%bx^Q-_|;s=ZX diff --git a/panda/board/obj/gitversion.h b/panda/board/obj/gitversion.h index 10fa394d29..f2fccb78e8 100644 --- a/panda/board/obj/gitversion.h +++ b/panda/board/obj/gitversion.h @@ -1,4 +1,4 @@ #pragma once extern const uint8_t gitversion[29]; -const uint8_t gitversion[29] = "DEV-a2602aa3-P92eb5651-DEBUG"; +const uint8_t gitversion[29] = "DEV-44048a30-P92eb5651-DEBUG"; diff --git a/panda/board/obj/panda.bin.signed b/panda/board/obj/panda.bin.signed index 99c8a84de5bb67169cebd15b720da7534c8f642b..86520efeca69be6b5df7c29b8ea2b37f5f379153 100644 GIT binary patch delta 160 zcmV;R0AK&O!V0*;3V^f$415SQG%z$cVKXp?6np`<6np}tB!69#$i9lW5-Nn$`ew9? zLEY@+r`0SRIM9v_UcvUePbphcV)&Iqg3Kap%xqD9o@F!*SR>Z+n+d94`bEgOGnUo} zfnFU|hILT$t&uEmy4p)zq8q*AvF#DH8~IV11tS!!RjLNd@SEii9Ibubr{>J^FJudG OwK~{$Y#@`a6ajLuMM}*8 delta 160 zcmV;R0AK&O!V0*;3V^f$415S-GBz+WVPP|e6np`<6np}tB!6D4Vp&i?Y-;Z?n^d5f zLc9*>fB57$^rD7T&RK9cc-TeR&934;hHK17^P?us*j*keu2v5t)iPK*iMYAnP^u!8 z+5%m(zJ@MWV7{RYF4A3xKo%sGtZmG%z$cVKXp?u%H3Au%H6iCVzTw++A0|k24ll2+oYf zB&y2dm(si*vdcOVNx+Tu$LD4)IcE)beO6}Ot_Qw%Q{U`RQsi4w#}QdO^sc<^*q`Jj ze{?5Xcx;kNqHI3M^wNEgNC0{5^q`VRI$C>(4ZmJKB>wnZn2;cl+#xb$Jd^QsY%h*c OylYv!Qk*6NJpqGgHA`0j delta 160 zcmV;R0AK%zkPC>A3xKo%sGta8GBz+WVPP|eu%H3Au%H6iCV!(G$PFTUk4?5bMX<^13`yPq diff --git a/panda/board/obj/version b/panda/board/obj/version index d37ab1e53b..59b446040c 100644 --- a/panda/board/obj/version +++ b/panda/board/obj/version @@ -1 +1 @@ -DEV-a2602aa3-P92eb5651-DEBUG \ No newline at end of file +DEV-44048a30-P92eb5651-DEBUG \ No newline at end of file diff --git a/prebuilt.json b/prebuilt.json index 5a1de5c40b..162fe7c640 100644 --- a/prebuilt.json +++ b/prebuilt.json @@ -1 +1 @@ -{"protected_inventory_sha256": "c2e4e536170d6b29ca3772814021cac69f5e5cf68514fc1a4c6eb513fe34a671", "schema_version": 1} +{"protected_inventory_sha256": "b4e686661d5f6afd9c25218e0374c35fc155aca5019ba5f579cd5f71341dda93", "schema_version": 1}