Compare commits

...

5 Commits

Author SHA1 Message Date
firestar5683 f857a55f59 Reapply build 2026-08-24 22:11:36 -05:00
firestar5683 05140149fb Reapply Agnos 19.6.10 2026-08-24 22:11:35 -05:00
firestarsdog 6a64493512 Revert "Guards, arrest this man"
This reverts commit 9c1d39b859.
2026-08-24 19:25:05 -04:00
firestarsdog 9c1d39b859 Guards, arrest this man 2026-08-24 19:23:25 -04:00
firestarsdog ffab4a8321 A pitstop! 2026-08-24 19:11:30 -04:00
127 changed files with 3704 additions and 3281 deletions
+51 -4
View File
@@ -1,4 +1,5 @@
import os
import importlib
import shutil
import subprocess
import sys
@@ -128,6 +129,41 @@ elif arch == "aarch64" and AGNOS:
arch = "larch64"
assert arch in ["larch64", "aarch64", "x86_64", "Darwin"]
# AGNOS 19.6 ships native dependencies as versioned Python packages. Link
# Cap'n Proto statically from that managed package so release binaries don't
# depend on the removed libcapnp-1.0.2.so system library.
try:
capnproto = importlib.import_module("capnproto")
except ModuleNotFoundError:
capnproto = None
try:
ffmpeg = importlib.import_module("ffmpeg")
except ModuleNotFoundError:
ffmpeg = None
capnproto_include_dirs = [capnproto.INCLUDE_DIR] if capnproto is not None else []
capnproto_lib_dirs = [capnproto.LIB_DIR] if capnproto is not None else []
ffmpeg_include_dirs = [ffmpeg.INCLUDE_DIR] if ffmpeg is not None else []
ffmpeg_lib_dirs = [ffmpeg.LIB_DIR] if ffmpeg is not None else []
# Cross-builds install managed dependencies in /work/.venv-linux-arm64, but
# comma devices expose the same packages from /usr/local/venv. Never embed the
# host/container mount path in release binaries.
ffmpeg_runtime_lib_dirs = ffmpeg_lib_dirs
if arch == "larch64" and ffmpeg is not None:
ffmpeg_runtime_lib_dirs = [os.path.join("/usr/local/venv", os.path.relpath(ffmpeg.LIB_DIR, sys.prefix))]
# The managed native-dependency packages keep their tools inside the package
# instead of installing them into /usr/local/venv/bin. cereal invokes capnpc
# directly while SConscript files are evaluated, so make the packaged tools
# discoverable to both SCons actions and configure-time subprocesses.
dependency_bin_dirs = [
package.BIN_DIR for package in (capnproto, ffmpeg)
if package is not None and os.path.isdir(package.BIN_DIR)
]
if dependency_bin_dirs:
os.environ["PATH"] = os.pathsep.join([*dependency_bin_dirs, os.environ["PATH"]])
# Homebrew llvm can shadow Apple clang and break macOS SDK header resolution.
# Use the system toolchain explicitly on macOS for reliable local builds.
cc = '/usr/bin/clang' if arch == "Darwin" else 'clang'
@@ -269,7 +305,10 @@ env = Environment(
"-Wno-vla-cxx-extension",
] + cflags + ccflags,
CPPPATH=cpppath + [
# Managed dependencies must precede the compatibility sysroot. The sysroot
# can intentionally retain legacy libraries for C3 support, but new release
# binaries must link against the versions shipped in the managed venv.
CPPPATH=capnproto_include_dirs + ffmpeg_include_dirs + cpppath + [
"#",
"#third_party/acados/include",
"#third_party/acados/include/blasfeo/include",
@@ -288,11 +327,11 @@ env = Environment(
RANLIB=ranlib,
LINKFLAGS=ldflags,
RPATH=rpath,
RPATH=ffmpeg_runtime_lib_dirs + rpath,
CFLAGS=["-std=gnu11"] + cflags,
CXXFLAGS=["-std=c++1z"] + cxxflags,
LIBPATH=libpath + [
LIBPATH=capnproto_lib_dirs + ffmpeg_lib_dirs + libpath + [
"#msgq_repo",
"#third_party",
"#selfdrive/pandad",
@@ -371,7 +410,15 @@ SConscript(['opendbc_repo/SConscript'], exports={'env': env_swaglog})
SConscript(['cereal/SConscript'])
Import('socketmaster', 'msgq')
messaging = [socketmaster, msgq, 'capnp', 'kj',]
if capnproto is not None:
messaging = [
socketmaster,
msgq,
File(os.path.join(capnproto.LIB_DIR, "libcapnp.a")),
File(os.path.join(capnproto.LIB_DIR, "libkj.a")),
]
else:
messaging = [socketmaster, msgq, 'capnp', 'kj']
Export('messaging')
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -21,7 +21,7 @@ fi
export QCOM_PRIORITY=12
if [ -z "$AGNOS_VERSION" ]; then
export AGNOS_VERSION="19.6.2"
export AGNOS_VERSION="19.6.10"
fi
if [ -z "$AGNOS_ACCEPTED_VERSIONS" ]; then
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1,2 +1,2 @@
extern const uint8_t gitversion[19];
const uint8_t gitversion[19] = "DEV-e28f72c6-DEBUG";
const uint8_t gitversion[19] = "DEV-46ae2472-DEBUG";
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
DEV-e28f72c6-DEBUG
DEV-46ae2472-DEBUG
+5
View File
@@ -29,6 +29,11 @@ dependencies = [
"setuptools",
"numpy >=2.0",
# AGNOS 19.6 native build dependencies
"comma-deps-capnproto; python_version >= '3.12'",
"comma-deps-ffmpeg; python_version >= '3.12'",
"libdatachannel-py>=2026.1.0.dev2; python_version >= '3.12'",
# body / webrtcd
"aiohttp",
"aiortc",
Binary file not shown.
+61
View File
@@ -467,6 +467,66 @@ EOF
echo "==> larch64 scons completed in $(( $(date +%s) - started_at ))s"
}
validate_larch64_artifacts() {
local engine
engine="$(detect_engine)"
echo "==> Validating larch64 runtime dependencies"
"${engine}" run --rm --platform linux/arm64 \
--user "${DOCKER_RUN_USER}" \
-v "${HOST_ROOT_DIR}:/work" \
-v "${HOST_VENV_DIR}:/work/.venv-linux-arm64:ro" \
-v "${HOST_SYSROOT_DIR}:/opt/tici-sysroot:ro" \
-v "${HOST_SYSROOT_DIR}/system/vendor/lib64:/system/vendor/lib64:ro" \
-w /work \
"${IMAGE_NAME}" bash -lc '
set -euo pipefail
ffmpeg_lib_dir="/work/.venv-linux-arm64/lib/python3.12/site-packages/ffmpeg/install/lib"
target_ffmpeg_runpath="/usr/local/venv/lib/python3.12/site-packages/ffmpeg/install/lib"
runtime_library_path="${ffmpeg_lib_dir}:/work/third_party/acados/larch64/lib:/work/third_party/libyuv/larch64/lib:/work/selfdrive/controls/lib/lateral_mpc_lib/c_generated_code:/work/selfdrive/controls/lib/longitudinal_mpc_lib/c_generated_code:/opt/tici-sysroot/usr/local/lib:/opt/tici-sysroot/lib/aarch64-linux-gnu:/opt/tici-sysroot/usr/lib/aarch64-linux-gnu:/system/vendor/lib64"
failures=0
while IFS= read -r -d "" artifact; do
if ! readelf -h "${artifact}" 2>/dev/null | grep -q "Machine:.*AArch64"; then
continue
fi
dynamic="$(readelf -d "${artifact}" 2>/dev/null || true)"
if grep -Eq "(RPATH|RUNPATH).*\/work\/" <<<"${dynamic}"; then
echo "ERROR: ${artifact} embeds a build-host runtime path" >&2
failures=1
fi
has_ffmpeg=0
while IFS= read -r needed; do
case "${needed}" in
libavformat.so.*|libavcodec.so.*|libswresample.so.*|libavutil.so.*)
has_ffmpeg=1
if [[ ! -e "${ffmpeg_lib_dir}/${needed}" ]]; then
echo "ERROR: ${artifact} links ${needed}, which is not shipped by the managed FFmpeg package" >&2
failures=1
fi
;;
esac
done < <(sed -n "s/.*Shared library: \[\([^]]*\)\].*/\1/p" <<<"${dynamic}")
if [[ "${has_ffmpeg}" -eq 1 ]] && ! grep -Fq "${target_ffmpeg_runpath}" <<<"${dynamic}"; then
echo "ERROR: ${artifact} links FFmpeg without the target managed-venv RUNPATH" >&2
failures=1
fi
missing="$(LD_LIBRARY_PATH="${runtime_library_path}" ldd "${artifact}" 2>&1 | grep "not found" || true)"
if [[ -n "${missing}" ]]; then
echo "ERROR: ${artifact} has unresolved target dependencies:" >&2
echo "${missing}" >&2
failures=1
fi
done < <(git ls-files -z)
exit "${failures}"
'
}
setup_host_venv() {
if [[ ! -f "${ROOT_DIR}/.venv/bin/activate" ]]; then
if [[ -x "${ROOT_DIR}/tools/install_python_dependencies.sh" ]]; then
@@ -516,6 +576,7 @@ run_larch64_build() {
cereal/messaging/bridge \
msgq_repo/msgq/ipc_pyx.so \
msgq_repo/msgq/visionipc/visionipc_pyx.so
validate_larch64_artifacts
touch "${ROOT_DIR}/prebuilt"
}
+8 -2
View File
@@ -39,6 +39,7 @@ from openpilot.starpilot.controls.starpilot_card import StarPilotCard
REPLAY = "REPLAY" in os.environ
OPENPILOT_LEAD_MIN_DISTANCE = 0.1
REDNECK_DECREASE_LOOKAHEAD_POINTS = 10
SLC_SOURCE_NONE = "None"
EventName = log.OnroadEvent.EventName
# forward
@@ -276,14 +277,19 @@ class Car:
self.CP.openpilotLongitudinalControl and not self.CP.pcmCruise
)
if not preap_software_cruise:
speed_limit_confirmation_pending = is_speed_limit_confirmation_pending(self.sm['starpilotPlan'])
starpilot_plan = self.sm['starpilotPlan']
speed_limit_confirmation_pending = is_speed_limit_confirmation_pending(starpilot_plan)
slc_target_with_offset = 0.0
if self.starpilot_toggles.speed_limit_controller and starpilot_plan.slcSpeedLimitSource != SLC_SOURCE_NONE:
slc_target_with_offset = starpilot_plan.slcSpeedLimit + starpilot_plan.slcSpeedLimitOffset
self.v_cruise_helper.update_v_cruise(
CS,
self.sm['carControl'].enabled,
self.is_metric,
speed_limit_confirmation_pending,
self.starpilot_toggles,
FPCS,
starpilot_car_state=FPCS,
slc_target_with_offset=slc_target_with_offset,
)
else:
preap_v_cruise_kph = float(CS.cruiseState.speed * CV.MS_TO_KPH)
+17 -3
View File
@@ -89,13 +89,15 @@ class VCruiseHelper:
return bool(getattr(starpilot_car_state, "decelHardCruise", False))
return False
def update_v_cruise(self, CS, enabled, is_metric, speed_limit_changed, starpilot_toggles, starpilot_car_state=None):
def update_v_cruise(self, CS, enabled, is_metric, speed_limit_changed, starpilot_toggles, starpilot_car_state=None,
slc_target_with_offset=0.0):
self.v_cruise_kph_last = self.v_cruise_kph
if CS.cruiseState.available:
if self.gm_cc_only or self.redneck_non_pcm or not self.CP.pcmCruise:
# if stock cruise is completely disabled, then we can use our own set speed logic
self._update_v_cruise_non_pcm(CS, enabled, is_metric, speed_limit_changed, starpilot_toggles, starpilot_car_state)
self._update_v_cruise_non_pcm(CS, enabled, is_metric, speed_limit_changed, starpilot_toggles, starpilot_car_state,
slc_target_with_offset)
self.v_cruise_cluster_kph = self.v_cruise_kph
self.update_button_timers(CS, enabled, starpilot_car_state)
else:
@@ -111,7 +113,8 @@ class VCruiseHelper:
self.v_cruise_kph = V_CRUISE_UNSET
self.v_cruise_cluster_kph = V_CRUISE_UNSET
def _update_v_cruise_non_pcm(self, CS, enabled, is_metric, speed_limit_changed, starpilot_toggles, starpilot_car_state=None):
def _update_v_cruise_non_pcm(self, CS, enabled, is_metric, speed_limit_changed, starpilot_toggles, starpilot_car_state=None,
slc_target_with_offset=0.0):
# handle button presses. TODO: this should be in state_control, but a decelCruise press
# would have the effect of both enabling and changing speed is checked after the state transition
if not enabled:
@@ -169,11 +172,22 @@ class VCruiseHelper:
short_interval, long_interval = self._get_cruise_delta_intervals(starpilot_toggles)
v_cruise_delta_interval = long_interval if long_press or button_is_hard else short_interval
v_cruise_delta = v_cruise_delta * v_cruise_delta_interval
previous_v_cruise_kph = self.v_cruise_kph
if v_cruise_delta_interval % 5 == 0 and self.v_cruise_kph % v_cruise_delta != 0: # partial interval
self.v_cruise_kph = CRUISE_NEAREST_FUNC[button_type](self.v_cruise_kph / v_cruise_delta) * v_cruise_delta
else:
self.v_cruise_kph += v_cruise_delta * CRUISE_INTERVAL_SIGN[button_type]
# Round to stored cruise-speed precision so the SLC target can be matched exactly.
slc_target_with_offset_kph = round(slc_target_with_offset * CV.MS_TO_KPH, 1)
# Preserve an active SLC target when an accel increment would otherwise skip it.
crossed_slc_target = (
button_type in ACCEL_CRUISE_BUTTONS and
previous_v_cruise_kph < slc_target_with_offset_kph < self.v_cruise_kph
)
if crossed_slc_target:
self.v_cruise_kph = slc_target_with_offset_kph
# If set is pressed while overriding, clip cruise speed to minimum of vEgo
if CS.gasPressed and button_type in (ButtonType.decelCruise, ButtonType.setCruise):
self.v_cruise_kph = max(self.v_cruise_kph, CS.vEgo * CV.MS_TO_KPH)
+41
View File
@@ -119,6 +119,47 @@ class TestVCruiseHelper:
)
assert pressed == (self.v_cruise_helper.v_cruise_kph == self.v_cruise_helper.v_cruise_kph_last)
def test_accel_stops_at_slc_target_before_crossing_it(self):
self.starpilot_toggles.cruise_increase = 5
self.v_cruise_helper.v_cruise_kph = 30
self.v_cruise_helper.v_cruise_cluster_kph = 30
slc_target_with_offset = 33 * CV.KPH_TO_MS
# A 30 km/h limit with a +3 km/h SLC offset should be an intermediate stop.
for expected_kph in (33, 35, 40):
for pressed in (True, False):
CS = car.CarState(cruiseState={"available": True})
CS.buttonEvents = [ButtonEvent(type=ButtonType.accelCruise, pressed=pressed)]
self.v_cruise_helper.update_v_cruise(
CS,
enabled=True,
is_metric=True,
speed_limit_changed=False,
starpilot_toggles=self.starpilot_toggles,
slc_target_with_offset=slc_target_with_offset,
)
assert self.v_cruise_helper.v_cruise_kph == pytest.approx(expected_kph)
def test_accel_uses_normal_interval_without_an_active_slc_target(self):
self.starpilot_toggles.cruise_increase = 5
self.v_cruise_helper.v_cruise_kph = 30
self.v_cruise_helper.v_cruise_cluster_kph = 30
# Card passes zero when SLC is disabled or has no active speed-limit source.
for pressed in (True, False):
CS = car.CarState(cruiseState={"available": True})
CS.buttonEvents = [ButtonEvent(type=ButtonType.accelCruise, pressed=pressed)]
self.v_cruise_helper.update_v_cruise(
CS,
enabled=True,
is_metric=True,
speed_limit_changed=False,
starpilot_toggles=self.starpilot_toggles,
)
assert self.v_cruise_helper.v_cruise_kph == pytest.approx(35)
def test_hard_press_uses_long_press_interval(self):
self.enable(52 * CV.MPH_TO_MS, False)
initial_v_cruise_kph = self.v_cruise_helper.v_cruise_kph
@@ -557,6 +557,29 @@ def test_set_speed_mode_overrides_on_raise_without_gas():
controller.shutdown()
def test_set_speed_mode_waits_until_above_slc_target_with_offset():
controller = make_controller(
is_metric=True,
speed_limit_controller_override_manual=False,
speed_limit_controller_override_set_speed=True,
speed_limit_offset2=3 * CV.KPH_TO_MS,
)
try:
controller.source = "Dashboard"
controller.target = 30 * CV.KPH_TO_MS
controller.last_valid_limit = controller.target
controller.update_override(30 * CV.KPH_TO_MS, 0.0, 30 * CV.KPH_TO_MS, 0.0, make_sm(gas_pressed=False))
controller.update_override(33 * CV.KPH_TO_MS, 0.0, 30 * CV.KPH_TO_MS, 0.0, make_sm(gas_pressed=False))
assert not controller.override_slc
controller.update_override(35 * CV.KPH_TO_MS, 0.0, 30 * CV.KPH_TO_MS, 0.0, make_sm(gas_pressed=False))
assert controller.override_slc
assert controller.overridden_speed == pytest.approx(35 * CV.KPH_TO_MS)
finally:
controller.shutdown()
def test_set_speed_override_clears_on_new_speed_zone():
# Entering a new (lower) posted limit clears the override; a steady high set speed must not
# re-arm it. Only a fresh +/- press re-arms.
+342 -342
View File
@@ -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_8339538066892951453) {
out_8339538066892951453[0] = delta_x[0] + nom_x[0];
out_8339538066892951453[1] = delta_x[1] + nom_x[1];
out_8339538066892951453[2] = delta_x[2] + nom_x[2];
out_8339538066892951453[3] = delta_x[3] + nom_x[3];
out_8339538066892951453[4] = delta_x[4] + nom_x[4];
out_8339538066892951453[5] = delta_x[5] + nom_x[5];
out_8339538066892951453[6] = delta_x[6] + nom_x[6];
out_8339538066892951453[7] = delta_x[7] + nom_x[7];
out_8339538066892951453[8] = delta_x[8] + nom_x[8];
void err_fun(double *nom_x, double *delta_x, double *out_7084348270501559549) {
out_7084348270501559549[0] = delta_x[0] + nom_x[0];
out_7084348270501559549[1] = delta_x[1] + nom_x[1];
out_7084348270501559549[2] = delta_x[2] + nom_x[2];
out_7084348270501559549[3] = delta_x[3] + nom_x[3];
out_7084348270501559549[4] = delta_x[4] + nom_x[4];
out_7084348270501559549[5] = delta_x[5] + nom_x[5];
out_7084348270501559549[6] = delta_x[6] + nom_x[6];
out_7084348270501559549[7] = delta_x[7] + nom_x[7];
out_7084348270501559549[8] = delta_x[8] + nom_x[8];
}
void inv_err_fun(double *nom_x, double *true_x, double *out_1869575881362213489) {
out_1869575881362213489[0] = -nom_x[0] + true_x[0];
out_1869575881362213489[1] = -nom_x[1] + true_x[1];
out_1869575881362213489[2] = -nom_x[2] + true_x[2];
out_1869575881362213489[3] = -nom_x[3] + true_x[3];
out_1869575881362213489[4] = -nom_x[4] + true_x[4];
out_1869575881362213489[5] = -nom_x[5] + true_x[5];
out_1869575881362213489[6] = -nom_x[6] + true_x[6];
out_1869575881362213489[7] = -nom_x[7] + true_x[7];
out_1869575881362213489[8] = -nom_x[8] + true_x[8];
void inv_err_fun(double *nom_x, double *true_x, double *out_693097121251649199) {
out_693097121251649199[0] = -nom_x[0] + true_x[0];
out_693097121251649199[1] = -nom_x[1] + true_x[1];
out_693097121251649199[2] = -nom_x[2] + true_x[2];
out_693097121251649199[3] = -nom_x[3] + true_x[3];
out_693097121251649199[4] = -nom_x[4] + true_x[4];
out_693097121251649199[5] = -nom_x[5] + true_x[5];
out_693097121251649199[6] = -nom_x[6] + true_x[6];
out_693097121251649199[7] = -nom_x[7] + true_x[7];
out_693097121251649199[8] = -nom_x[8] + true_x[8];
}
void H_mod_fun(double *state, double *out_4134445094065349854) {
out_4134445094065349854[0] = 1.0;
out_4134445094065349854[1] = 0.0;
out_4134445094065349854[2] = 0.0;
out_4134445094065349854[3] = 0.0;
out_4134445094065349854[4] = 0.0;
out_4134445094065349854[5] = 0.0;
out_4134445094065349854[6] = 0.0;
out_4134445094065349854[7] = 0.0;
out_4134445094065349854[8] = 0.0;
out_4134445094065349854[9] = 0.0;
out_4134445094065349854[10] = 1.0;
out_4134445094065349854[11] = 0.0;
out_4134445094065349854[12] = 0.0;
out_4134445094065349854[13] = 0.0;
out_4134445094065349854[14] = 0.0;
out_4134445094065349854[15] = 0.0;
out_4134445094065349854[16] = 0.0;
out_4134445094065349854[17] = 0.0;
out_4134445094065349854[18] = 0.0;
out_4134445094065349854[19] = 0.0;
out_4134445094065349854[20] = 1.0;
out_4134445094065349854[21] = 0.0;
out_4134445094065349854[22] = 0.0;
out_4134445094065349854[23] = 0.0;
out_4134445094065349854[24] = 0.0;
out_4134445094065349854[25] = 0.0;
out_4134445094065349854[26] = 0.0;
out_4134445094065349854[27] = 0.0;
out_4134445094065349854[28] = 0.0;
out_4134445094065349854[29] = 0.0;
out_4134445094065349854[30] = 1.0;
out_4134445094065349854[31] = 0.0;
out_4134445094065349854[32] = 0.0;
out_4134445094065349854[33] = 0.0;
out_4134445094065349854[34] = 0.0;
out_4134445094065349854[35] = 0.0;
out_4134445094065349854[36] = 0.0;
out_4134445094065349854[37] = 0.0;
out_4134445094065349854[38] = 0.0;
out_4134445094065349854[39] = 0.0;
out_4134445094065349854[40] = 1.0;
out_4134445094065349854[41] = 0.0;
out_4134445094065349854[42] = 0.0;
out_4134445094065349854[43] = 0.0;
out_4134445094065349854[44] = 0.0;
out_4134445094065349854[45] = 0.0;
out_4134445094065349854[46] = 0.0;
out_4134445094065349854[47] = 0.0;
out_4134445094065349854[48] = 0.0;
out_4134445094065349854[49] = 0.0;
out_4134445094065349854[50] = 1.0;
out_4134445094065349854[51] = 0.0;
out_4134445094065349854[52] = 0.0;
out_4134445094065349854[53] = 0.0;
out_4134445094065349854[54] = 0.0;
out_4134445094065349854[55] = 0.0;
out_4134445094065349854[56] = 0.0;
out_4134445094065349854[57] = 0.0;
out_4134445094065349854[58] = 0.0;
out_4134445094065349854[59] = 0.0;
out_4134445094065349854[60] = 1.0;
out_4134445094065349854[61] = 0.0;
out_4134445094065349854[62] = 0.0;
out_4134445094065349854[63] = 0.0;
out_4134445094065349854[64] = 0.0;
out_4134445094065349854[65] = 0.0;
out_4134445094065349854[66] = 0.0;
out_4134445094065349854[67] = 0.0;
out_4134445094065349854[68] = 0.0;
out_4134445094065349854[69] = 0.0;
out_4134445094065349854[70] = 1.0;
out_4134445094065349854[71] = 0.0;
out_4134445094065349854[72] = 0.0;
out_4134445094065349854[73] = 0.0;
out_4134445094065349854[74] = 0.0;
out_4134445094065349854[75] = 0.0;
out_4134445094065349854[76] = 0.0;
out_4134445094065349854[77] = 0.0;
out_4134445094065349854[78] = 0.0;
out_4134445094065349854[79] = 0.0;
out_4134445094065349854[80] = 1.0;
void H_mod_fun(double *state, double *out_1623843232183312219) {
out_1623843232183312219[0] = 1.0;
out_1623843232183312219[1] = 0.0;
out_1623843232183312219[2] = 0.0;
out_1623843232183312219[3] = 0.0;
out_1623843232183312219[4] = 0.0;
out_1623843232183312219[5] = 0.0;
out_1623843232183312219[6] = 0.0;
out_1623843232183312219[7] = 0.0;
out_1623843232183312219[8] = 0.0;
out_1623843232183312219[9] = 0.0;
out_1623843232183312219[10] = 1.0;
out_1623843232183312219[11] = 0.0;
out_1623843232183312219[12] = 0.0;
out_1623843232183312219[13] = 0.0;
out_1623843232183312219[14] = 0.0;
out_1623843232183312219[15] = 0.0;
out_1623843232183312219[16] = 0.0;
out_1623843232183312219[17] = 0.0;
out_1623843232183312219[18] = 0.0;
out_1623843232183312219[19] = 0.0;
out_1623843232183312219[20] = 1.0;
out_1623843232183312219[21] = 0.0;
out_1623843232183312219[22] = 0.0;
out_1623843232183312219[23] = 0.0;
out_1623843232183312219[24] = 0.0;
out_1623843232183312219[25] = 0.0;
out_1623843232183312219[26] = 0.0;
out_1623843232183312219[27] = 0.0;
out_1623843232183312219[28] = 0.0;
out_1623843232183312219[29] = 0.0;
out_1623843232183312219[30] = 1.0;
out_1623843232183312219[31] = 0.0;
out_1623843232183312219[32] = 0.0;
out_1623843232183312219[33] = 0.0;
out_1623843232183312219[34] = 0.0;
out_1623843232183312219[35] = 0.0;
out_1623843232183312219[36] = 0.0;
out_1623843232183312219[37] = 0.0;
out_1623843232183312219[38] = 0.0;
out_1623843232183312219[39] = 0.0;
out_1623843232183312219[40] = 1.0;
out_1623843232183312219[41] = 0.0;
out_1623843232183312219[42] = 0.0;
out_1623843232183312219[43] = 0.0;
out_1623843232183312219[44] = 0.0;
out_1623843232183312219[45] = 0.0;
out_1623843232183312219[46] = 0.0;
out_1623843232183312219[47] = 0.0;
out_1623843232183312219[48] = 0.0;
out_1623843232183312219[49] = 0.0;
out_1623843232183312219[50] = 1.0;
out_1623843232183312219[51] = 0.0;
out_1623843232183312219[52] = 0.0;
out_1623843232183312219[53] = 0.0;
out_1623843232183312219[54] = 0.0;
out_1623843232183312219[55] = 0.0;
out_1623843232183312219[56] = 0.0;
out_1623843232183312219[57] = 0.0;
out_1623843232183312219[58] = 0.0;
out_1623843232183312219[59] = 0.0;
out_1623843232183312219[60] = 1.0;
out_1623843232183312219[61] = 0.0;
out_1623843232183312219[62] = 0.0;
out_1623843232183312219[63] = 0.0;
out_1623843232183312219[64] = 0.0;
out_1623843232183312219[65] = 0.0;
out_1623843232183312219[66] = 0.0;
out_1623843232183312219[67] = 0.0;
out_1623843232183312219[68] = 0.0;
out_1623843232183312219[69] = 0.0;
out_1623843232183312219[70] = 1.0;
out_1623843232183312219[71] = 0.0;
out_1623843232183312219[72] = 0.0;
out_1623843232183312219[73] = 0.0;
out_1623843232183312219[74] = 0.0;
out_1623843232183312219[75] = 0.0;
out_1623843232183312219[76] = 0.0;
out_1623843232183312219[77] = 0.0;
out_1623843232183312219[78] = 0.0;
out_1623843232183312219[79] = 0.0;
out_1623843232183312219[80] = 1.0;
}
void f_fun(double *state, double dt, double *out_1187519494066628558) {
out_1187519494066628558[0] = state[0];
out_1187519494066628558[1] = state[1];
out_1187519494066628558[2] = state[2];
out_1187519494066628558[3] = state[3];
out_1187519494066628558[4] = state[4];
out_1187519494066628558[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_1187519494066628558[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_1187519494066628558[7] = state[7];
out_1187519494066628558[8] = state[8];
void f_fun(double *state, double dt, double *out_1622952619636770739) {
out_1622952619636770739[0] = state[0];
out_1622952619636770739[1] = state[1];
out_1622952619636770739[2] = state[2];
out_1622952619636770739[3] = state[3];
out_1622952619636770739[4] = state[4];
out_1622952619636770739[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_1622952619636770739[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_1622952619636770739[7] = state[7];
out_1622952619636770739[8] = state[8];
}
void F_fun(double *state, double dt, double *out_638221139616797346) {
out_638221139616797346[0] = 1;
out_638221139616797346[1] = 0;
out_638221139616797346[2] = 0;
out_638221139616797346[3] = 0;
out_638221139616797346[4] = 0;
out_638221139616797346[5] = 0;
out_638221139616797346[6] = 0;
out_638221139616797346[7] = 0;
out_638221139616797346[8] = 0;
out_638221139616797346[9] = 0;
out_638221139616797346[10] = 1;
out_638221139616797346[11] = 0;
out_638221139616797346[12] = 0;
out_638221139616797346[13] = 0;
out_638221139616797346[14] = 0;
out_638221139616797346[15] = 0;
out_638221139616797346[16] = 0;
out_638221139616797346[17] = 0;
out_638221139616797346[18] = 0;
out_638221139616797346[19] = 0;
out_638221139616797346[20] = 1;
out_638221139616797346[21] = 0;
out_638221139616797346[22] = 0;
out_638221139616797346[23] = 0;
out_638221139616797346[24] = 0;
out_638221139616797346[25] = 0;
out_638221139616797346[26] = 0;
out_638221139616797346[27] = 0;
out_638221139616797346[28] = 0;
out_638221139616797346[29] = 0;
out_638221139616797346[30] = 1;
out_638221139616797346[31] = 0;
out_638221139616797346[32] = 0;
out_638221139616797346[33] = 0;
out_638221139616797346[34] = 0;
out_638221139616797346[35] = 0;
out_638221139616797346[36] = 0;
out_638221139616797346[37] = 0;
out_638221139616797346[38] = 0;
out_638221139616797346[39] = 0;
out_638221139616797346[40] = 1;
out_638221139616797346[41] = 0;
out_638221139616797346[42] = 0;
out_638221139616797346[43] = 0;
out_638221139616797346[44] = 0;
out_638221139616797346[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_638221139616797346[46] = -dt*stiffness_front*(-state[2] - state[3] + state[7])*state[0]/(mass*pow(state[1], 2));
out_638221139616797346[47] = -dt*stiffness_front*state[0]/(mass*state[1]);
out_638221139616797346[48] = -dt*stiffness_front*state[0]/(mass*state[1]);
out_638221139616797346[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_638221139616797346[50] = dt*(-stiffness_front*state[0] - stiffness_rear*state[0])/(mass*state[4]) + 1;
out_638221139616797346[51] = dt*(-state[4] + (-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])/(mass*state[4]));
out_638221139616797346[52] = dt*stiffness_front*state[0]/(mass*state[1]);
out_638221139616797346[53] = -9.8100000000000005*dt;
out_638221139616797346[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_638221139616797346[55] = -center_to_front*dt*stiffness_front*(-state[2] - state[3] + state[7])*state[0]/(rotational_inertia*pow(state[1], 2));
out_638221139616797346[56] = -center_to_front*dt*stiffness_front*state[0]/(rotational_inertia*state[1]);
out_638221139616797346[57] = -center_to_front*dt*stiffness_front*state[0]/(rotational_inertia*state[1]);
out_638221139616797346[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_638221139616797346[59] = dt*(-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])/(rotational_inertia*state[4]);
out_638221139616797346[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_638221139616797346[61] = center_to_front*dt*stiffness_front*state[0]/(rotational_inertia*state[1]);
out_638221139616797346[62] = 0;
out_638221139616797346[63] = 0;
out_638221139616797346[64] = 0;
out_638221139616797346[65] = 0;
out_638221139616797346[66] = 0;
out_638221139616797346[67] = 0;
out_638221139616797346[68] = 0;
out_638221139616797346[69] = 0;
out_638221139616797346[70] = 1;
out_638221139616797346[71] = 0;
out_638221139616797346[72] = 0;
out_638221139616797346[73] = 0;
out_638221139616797346[74] = 0;
out_638221139616797346[75] = 0;
out_638221139616797346[76] = 0;
out_638221139616797346[77] = 0;
out_638221139616797346[78] = 0;
out_638221139616797346[79] = 0;
out_638221139616797346[80] = 1;
void F_fun(double *state, double dt, double *out_7142842168519911469) {
out_7142842168519911469[0] = 1;
out_7142842168519911469[1] = 0;
out_7142842168519911469[2] = 0;
out_7142842168519911469[3] = 0;
out_7142842168519911469[4] = 0;
out_7142842168519911469[5] = 0;
out_7142842168519911469[6] = 0;
out_7142842168519911469[7] = 0;
out_7142842168519911469[8] = 0;
out_7142842168519911469[9] = 0;
out_7142842168519911469[10] = 1;
out_7142842168519911469[11] = 0;
out_7142842168519911469[12] = 0;
out_7142842168519911469[13] = 0;
out_7142842168519911469[14] = 0;
out_7142842168519911469[15] = 0;
out_7142842168519911469[16] = 0;
out_7142842168519911469[17] = 0;
out_7142842168519911469[18] = 0;
out_7142842168519911469[19] = 0;
out_7142842168519911469[20] = 1;
out_7142842168519911469[21] = 0;
out_7142842168519911469[22] = 0;
out_7142842168519911469[23] = 0;
out_7142842168519911469[24] = 0;
out_7142842168519911469[25] = 0;
out_7142842168519911469[26] = 0;
out_7142842168519911469[27] = 0;
out_7142842168519911469[28] = 0;
out_7142842168519911469[29] = 0;
out_7142842168519911469[30] = 1;
out_7142842168519911469[31] = 0;
out_7142842168519911469[32] = 0;
out_7142842168519911469[33] = 0;
out_7142842168519911469[34] = 0;
out_7142842168519911469[35] = 0;
out_7142842168519911469[36] = 0;
out_7142842168519911469[37] = 0;
out_7142842168519911469[38] = 0;
out_7142842168519911469[39] = 0;
out_7142842168519911469[40] = 1;
out_7142842168519911469[41] = 0;
out_7142842168519911469[42] = 0;
out_7142842168519911469[43] = 0;
out_7142842168519911469[44] = 0;
out_7142842168519911469[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_7142842168519911469[46] = -dt*stiffness_front*(-state[2] - state[3] + state[7])*state[0]/(mass*pow(state[1], 2));
out_7142842168519911469[47] = -dt*stiffness_front*state[0]/(mass*state[1]);
out_7142842168519911469[48] = -dt*stiffness_front*state[0]/(mass*state[1]);
out_7142842168519911469[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_7142842168519911469[50] = dt*(-stiffness_front*state[0] - stiffness_rear*state[0])/(mass*state[4]) + 1;
out_7142842168519911469[51] = dt*(-state[4] + (-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])/(mass*state[4]));
out_7142842168519911469[52] = dt*stiffness_front*state[0]/(mass*state[1]);
out_7142842168519911469[53] = -9.8100000000000005*dt;
out_7142842168519911469[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_7142842168519911469[55] = -center_to_front*dt*stiffness_front*(-state[2] - state[3] + state[7])*state[0]/(rotational_inertia*pow(state[1], 2));
out_7142842168519911469[56] = -center_to_front*dt*stiffness_front*state[0]/(rotational_inertia*state[1]);
out_7142842168519911469[57] = -center_to_front*dt*stiffness_front*state[0]/(rotational_inertia*state[1]);
out_7142842168519911469[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_7142842168519911469[59] = dt*(-center_to_front*stiffness_front*state[0] + center_to_rear*stiffness_rear*state[0])/(rotational_inertia*state[4]);
out_7142842168519911469[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_7142842168519911469[61] = center_to_front*dt*stiffness_front*state[0]/(rotational_inertia*state[1]);
out_7142842168519911469[62] = 0;
out_7142842168519911469[63] = 0;
out_7142842168519911469[64] = 0;
out_7142842168519911469[65] = 0;
out_7142842168519911469[66] = 0;
out_7142842168519911469[67] = 0;
out_7142842168519911469[68] = 0;
out_7142842168519911469[69] = 0;
out_7142842168519911469[70] = 1;
out_7142842168519911469[71] = 0;
out_7142842168519911469[72] = 0;
out_7142842168519911469[73] = 0;
out_7142842168519911469[74] = 0;
out_7142842168519911469[75] = 0;
out_7142842168519911469[76] = 0;
out_7142842168519911469[77] = 0;
out_7142842168519911469[78] = 0;
out_7142842168519911469[79] = 0;
out_7142842168519911469[80] = 1;
}
void h_25(double *state, double *unused, double *out_6007362445110034756) {
out_6007362445110034756[0] = state[6];
void h_25(double *state, double *unused, double *out_7699167154037203435) {
out_7699167154037203435[0] = state[6];
}
void H_25(double *state, double *unused, double *out_5119110753731964525) {
out_5119110753731964525[0] = 0;
out_5119110753731964525[1] = 0;
out_5119110753731964525[2] = 0;
out_5119110753731964525[3] = 0;
out_5119110753731964525[4] = 0;
out_5119110753731964525[5] = 0;
out_5119110753731964525[6] = 1;
out_5119110753731964525[7] = 0;
out_5119110753731964525[8] = 0;
void H_25(double *state, double *unused, double *out_1899137417806179458) {
out_1899137417806179458[0] = 0;
out_1899137417806179458[1] = 0;
out_1899137417806179458[2] = 0;
out_1899137417806179458[3] = 0;
out_1899137417806179458[4] = 0;
out_1899137417806179458[5] = 0;
out_1899137417806179458[6] = 1;
out_1899137417806179458[7] = 0;
out_1899137417806179458[8] = 0;
}
void h_24(double *state, double *unused, double *out_5449620096162801389) {
out_5449620096162801389[0] = state[4];
out_5449620096162801389[1] = state[5];
void h_24(double *state, double *unused, double *out_5775267180984789848) {
out_5775267180984789848[0] = state[4];
out_5775267180984789848[1] = state[5];
}
void H_24(double *state, double *unused, double *out_2946461154726464959) {
out_2946461154726464959[0] = 0;
out_2946461154726464959[1] = 0;
out_2946461154726464959[2] = 0;
out_2946461154726464959[3] = 0;
out_2946461154726464959[4] = 1;
out_2946461154726464959[5] = 0;
out_2946461154726464959[6] = 0;
out_2946461154726464959[7] = 0;
out_2946461154726464959[8] = 0;
out_2946461154726464959[9] = 0;
out_2946461154726464959[10] = 0;
out_2946461154726464959[11] = 0;
out_2946461154726464959[12] = 0;
out_2946461154726464959[13] = 0;
out_2946461154726464959[14] = 1;
out_2946461154726464959[15] = 0;
out_2946461154726464959[16] = 0;
out_2946461154726464959[17] = 0;
void H_24(double *state, double *unused, double *out_273512181199320108) {
out_273512181199320108[0] = 0;
out_273512181199320108[1] = 0;
out_273512181199320108[2] = 0;
out_273512181199320108[3] = 0;
out_273512181199320108[4] = 1;
out_273512181199320108[5] = 0;
out_273512181199320108[6] = 0;
out_273512181199320108[7] = 0;
out_273512181199320108[8] = 0;
out_273512181199320108[9] = 0;
out_273512181199320108[10] = 0;
out_273512181199320108[11] = 0;
out_273512181199320108[12] = 0;
out_273512181199320108[13] = 0;
out_273512181199320108[14] = 1;
out_273512181199320108[15] = 0;
out_273512181199320108[16] = 0;
out_273512181199320108[17] = 0;
}
void h_30(double *state, double *unused, double *out_2369912916856012406) {
out_2369912916856012406[0] = state[4];
void h_30(double *state, double *unused, double *out_940710322681338449) {
out_940710322681338449[0] = state[4];
}
void H_30(double *state, double *unused, double *out_7637443712239213152) {
out_7637443712239213152[0] = 0;
out_7637443712239213152[1] = 0;
out_7637443712239213152[2] = 0;
out_7637443712239213152[3] = 0;
out_7637443712239213152[4] = 1;
out_7637443712239213152[5] = 0;
out_7637443712239213152[6] = 0;
out_7637443712239213152[7] = 0;
out_7637443712239213152[8] = 0;
void H_30(double *state, double *unused, double *out_8815827759297796213) {
out_8815827759297796213[0] = 0;
out_8815827759297796213[1] = 0;
out_8815827759297796213[2] = 0;
out_8815827759297796213[3] = 0;
out_8815827759297796213[4] = 1;
out_8815827759297796213[5] = 0;
out_8815827759297796213[6] = 0;
out_8815827759297796213[7] = 0;
out_8815827759297796213[8] = 0;
}
void h_26(double *state, double *unused, double *out_6836290203325307661) {
out_6836290203325307661[0] = state[7];
void h_26(double *state, double *unused, double *out_1922794416016636561) {
out_1922794416016636561[0] = state[7];
}
void H_26(double *state, double *unused, double *out_1377607434857908301) {
out_1377607434857908301[0] = 0;
out_1377607434857908301[1] = 0;
out_1377607434857908301[2] = 0;
out_1377607434857908301[3] = 0;
out_1377607434857908301[4] = 0;
out_1377607434857908301[5] = 0;
out_1377607434857908301[6] = 0;
out_1377607434857908301[7] = 1;
out_1377607434857908301[8] = 0;
void H_26(double *state, double *unused, double *out_1842365901067876766) {
out_1842365901067876766[0] = 0;
out_1842365901067876766[1] = 0;
out_1842365901067876766[2] = 0;
out_1842365901067876766[3] = 0;
out_1842365901067876766[4] = 0;
out_1842365901067876766[5] = 0;
out_1842365901067876766[6] = 0;
out_1842365901067876766[7] = 1;
out_1842365901067876766[8] = 0;
}
void h_27(double *state, double *unused, double *out_2710474474758657570) {
out_2710474474758657570[0] = state[3];
void h_27(double *state, double *unused, double *out_3098231746361013839) {
out_3098231746361013839[0] = state[3];
}
void H_27(double *state, double *unused, double *out_8585706290286395247) {
out_8585706290286395247[0] = 0;
out_8585706290286395247[1] = 0;
out_8585706290286395247[2] = 0;
out_8585706290286395247[3] = 1;
out_8585706290286395247[4] = 0;
out_8585706290286395247[5] = 0;
out_8585706290286395247[6] = 0;
out_8585706290286395247[7] = 0;
out_8585706290286395247[8] = 0;
void H_27(double *state, double *unused, double *out_6641064447497371302) {
out_6641064447497371302[0] = 0;
out_6641064447497371302[1] = 0;
out_6641064447497371302[2] = 0;
out_6641064447497371302[3] = 1;
out_6641064447497371302[4] = 0;
out_6641064447497371302[5] = 0;
out_6641064447497371302[6] = 0;
out_6641064447497371302[7] = 0;
out_6641064447497371302[8] = 0;
}
void h_29(double *state, double *unused, double *out_1542363084005055587) {
out_1542363084005055587[0] = state[1];
void h_29(double *state, double *unused, double *out_539217781893008511) {
out_539217781893008511[0] = state[1];
}
void H_29(double *state, double *unused, double *out_8147675056553605336) {
out_8147675056553605336[0] = 0;
out_8147675056553605336[1] = 1;
out_8147675056553605336[2] = 0;
out_8147675056553605336[3] = 0;
out_8147675056553605336[4] = 0;
out_8147675056553605336[5] = 0;
out_8147675056553605336[6] = 0;
out_8147675056553605336[7] = 0;
out_8147675056553605336[8] = 0;
void H_29(double *state, double *unused, double *out_4927701720627820269) {
out_4927701720627820269[0] = 0;
out_4927701720627820269[1] = 1;
out_4927701720627820269[2] = 0;
out_4927701720627820269[3] = 0;
out_4927701720627820269[4] = 0;
out_4927701720627820269[5] = 0;
out_4927701720627820269[6] = 0;
out_4927701720627820269[7] = 0;
out_4927701720627820269[8] = 0;
}
void h_28(double *state, double *unused, double *out_7712147742419503215) {
out_7712147742419503215[0] = state[0];
void h_28(double *state, double *unused, double *out_822702928747961705) {
out_822702928747961705[0] = state[0];
}
void H_28(double *state, double *unused, double *out_3065276039484074762) {
out_3065276039484074762[0] = 1;
out_3065276039484074762[1] = 0;
out_3065276039484074762[2] = 0;
out_3065276039484074762[3] = 0;
out_3065276039484074762[4] = 0;
out_3065276039484074762[5] = 0;
out_3065276039484074762[6] = 0;
out_3065276039484074762[7] = 0;
out_3065276039484074762[8] = 0;
void H_28(double *state, double *unused, double *out_154697296441710305) {
out_154697296441710305[0] = 1;
out_154697296441710305[1] = 0;
out_154697296441710305[2] = 0;
out_154697296441710305[3] = 0;
out_154697296441710305[4] = 0;
out_154697296441710305[5] = 0;
out_154697296441710305[6] = 0;
out_154697296441710305[7] = 0;
out_154697296441710305[8] = 0;
}
void h_31(double *state, double *unused, double *out_6282556507394540645) {
out_6282556507394540645[0] = state[8];
void h_31(double *state, double *unused, double *out_6649273621392976317) {
out_6649273621392976317[0] = state[8];
}
void H_31(double *state, double *unused, double *out_5149756715608924953) {
out_5149756715608924953[0] = 0;
out_5149756715608924953[1] = 0;
out_5149756715608924953[2] = 0;
out_5149756715608924953[3] = 0;
out_5149756715608924953[4] = 0;
out_5149756715608924953[5] = 0;
out_5149756715608924953[6] = 0;
out_5149756715608924953[7] = 0;
out_5149756715608924953[8] = 1;
void H_31(double *state, double *unused, double *out_1929783379683139886) {
out_1929783379683139886[0] = 0;
out_1929783379683139886[1] = 0;
out_1929783379683139886[2] = 0;
out_1929783379683139886[3] = 0;
out_1929783379683139886[4] = 0;
out_1929783379683139886[5] = 0;
out_1929783379683139886[6] = 0;
out_1929783379683139886[7] = 0;
out_1929783379683139886[8] = 1;
}
#include <eigen3/Eigen/Dense>
#include <iostream>
@@ -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_8339538066892951453) {
err_fun(nom_x, delta_x, out_8339538066892951453);
void car_err_fun(double *nom_x, double *delta_x, double *out_7084348270501559549) {
err_fun(nom_x, delta_x, out_7084348270501559549);
}
void car_inv_err_fun(double *nom_x, double *true_x, double *out_1869575881362213489) {
inv_err_fun(nom_x, true_x, out_1869575881362213489);
void car_inv_err_fun(double *nom_x, double *true_x, double *out_693097121251649199) {
inv_err_fun(nom_x, true_x, out_693097121251649199);
}
void car_H_mod_fun(double *state, double *out_4134445094065349854) {
H_mod_fun(state, out_4134445094065349854);
void car_H_mod_fun(double *state, double *out_1623843232183312219) {
H_mod_fun(state, out_1623843232183312219);
}
void car_f_fun(double *state, double dt, double *out_1187519494066628558) {
f_fun(state, dt, out_1187519494066628558);
void car_f_fun(double *state, double dt, double *out_1622952619636770739) {
f_fun(state, dt, out_1622952619636770739);
}
void car_F_fun(double *state, double dt, double *out_638221139616797346) {
F_fun(state, dt, out_638221139616797346);
void car_F_fun(double *state, double dt, double *out_7142842168519911469) {
F_fun(state, dt, out_7142842168519911469);
}
void car_h_25(double *state, double *unused, double *out_6007362445110034756) {
h_25(state, unused, out_6007362445110034756);
void car_h_25(double *state, double *unused, double *out_7699167154037203435) {
h_25(state, unused, out_7699167154037203435);
}
void car_H_25(double *state, double *unused, double *out_5119110753731964525) {
H_25(state, unused, out_5119110753731964525);
void car_H_25(double *state, double *unused, double *out_1899137417806179458) {
H_25(state, unused, out_1899137417806179458);
}
void car_h_24(double *state, double *unused, double *out_5449620096162801389) {
h_24(state, unused, out_5449620096162801389);
void car_h_24(double *state, double *unused, double *out_5775267180984789848) {
h_24(state, unused, out_5775267180984789848);
}
void car_H_24(double *state, double *unused, double *out_2946461154726464959) {
H_24(state, unused, out_2946461154726464959);
void car_H_24(double *state, double *unused, double *out_273512181199320108) {
H_24(state, unused, out_273512181199320108);
}
void car_h_30(double *state, double *unused, double *out_2369912916856012406) {
h_30(state, unused, out_2369912916856012406);
void car_h_30(double *state, double *unused, double *out_940710322681338449) {
h_30(state, unused, out_940710322681338449);
}
void car_H_30(double *state, double *unused, double *out_7637443712239213152) {
H_30(state, unused, out_7637443712239213152);
void car_H_30(double *state, double *unused, double *out_8815827759297796213) {
H_30(state, unused, out_8815827759297796213);
}
void car_h_26(double *state, double *unused, double *out_6836290203325307661) {
h_26(state, unused, out_6836290203325307661);
void car_h_26(double *state, double *unused, double *out_1922794416016636561) {
h_26(state, unused, out_1922794416016636561);
}
void car_H_26(double *state, double *unused, double *out_1377607434857908301) {
H_26(state, unused, out_1377607434857908301);
void car_H_26(double *state, double *unused, double *out_1842365901067876766) {
H_26(state, unused, out_1842365901067876766);
}
void car_h_27(double *state, double *unused, double *out_2710474474758657570) {
h_27(state, unused, out_2710474474758657570);
void car_h_27(double *state, double *unused, double *out_3098231746361013839) {
h_27(state, unused, out_3098231746361013839);
}
void car_H_27(double *state, double *unused, double *out_8585706290286395247) {
H_27(state, unused, out_8585706290286395247);
void car_H_27(double *state, double *unused, double *out_6641064447497371302) {
H_27(state, unused, out_6641064447497371302);
}
void car_h_29(double *state, double *unused, double *out_1542363084005055587) {
h_29(state, unused, out_1542363084005055587);
void car_h_29(double *state, double *unused, double *out_539217781893008511) {
h_29(state, unused, out_539217781893008511);
}
void car_H_29(double *state, double *unused, double *out_8147675056553605336) {
H_29(state, unused, out_8147675056553605336);
void car_H_29(double *state, double *unused, double *out_4927701720627820269) {
H_29(state, unused, out_4927701720627820269);
}
void car_h_28(double *state, double *unused, double *out_7712147742419503215) {
h_28(state, unused, out_7712147742419503215);
void car_h_28(double *state, double *unused, double *out_822702928747961705) {
h_28(state, unused, out_822702928747961705);
}
void car_H_28(double *state, double *unused, double *out_3065276039484074762) {
H_28(state, unused, out_3065276039484074762);
void car_H_28(double *state, double *unused, double *out_154697296441710305) {
H_28(state, unused, out_154697296441710305);
}
void car_h_31(double *state, double *unused, double *out_6282556507394540645) {
h_31(state, unused, out_6282556507394540645);
void car_h_31(double *state, double *unused, double *out_6649273621392976317) {
h_31(state, unused, out_6649273621392976317);
}
void car_H_31(double *state, double *unused, double *out_5149756715608924953) {
H_31(state, unused, out_5149756715608924953);
void car_H_31(double *state, double *unused, double *out_1929783379683139886) {
H_31(state, unused, out_1929783379683139886);
}
void car_predict(double *in_x, double *in_P, double *in_Q, double dt) {
predict(in_x, in_P, in_Q, dt);
+21 -21
View File
@@ -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_8339538066892951453);
void car_inv_err_fun(double *nom_x, double *true_x, double *out_1869575881362213489);
void car_H_mod_fun(double *state, double *out_4134445094065349854);
void car_f_fun(double *state, double dt, double *out_1187519494066628558);
void car_F_fun(double *state, double dt, double *out_638221139616797346);
void car_h_25(double *state, double *unused, double *out_6007362445110034756);
void car_H_25(double *state, double *unused, double *out_5119110753731964525);
void car_h_24(double *state, double *unused, double *out_5449620096162801389);
void car_H_24(double *state, double *unused, double *out_2946461154726464959);
void car_h_30(double *state, double *unused, double *out_2369912916856012406);
void car_H_30(double *state, double *unused, double *out_7637443712239213152);
void car_h_26(double *state, double *unused, double *out_6836290203325307661);
void car_H_26(double *state, double *unused, double *out_1377607434857908301);
void car_h_27(double *state, double *unused, double *out_2710474474758657570);
void car_H_27(double *state, double *unused, double *out_8585706290286395247);
void car_h_29(double *state, double *unused, double *out_1542363084005055587);
void car_H_29(double *state, double *unused, double *out_8147675056553605336);
void car_h_28(double *state, double *unused, double *out_7712147742419503215);
void car_H_28(double *state, double *unused, double *out_3065276039484074762);
void car_h_31(double *state, double *unused, double *out_6282556507394540645);
void car_H_31(double *state, double *unused, double *out_5149756715608924953);
void car_err_fun(double *nom_x, double *delta_x, double *out_7084348270501559549);
void car_inv_err_fun(double *nom_x, double *true_x, double *out_693097121251649199);
void car_H_mod_fun(double *state, double *out_1623843232183312219);
void car_f_fun(double *state, double dt, double *out_1622952619636770739);
void car_F_fun(double *state, double dt, double *out_7142842168519911469);
void car_h_25(double *state, double *unused, double *out_7699167154037203435);
void car_H_25(double *state, double *unused, double *out_1899137417806179458);
void car_h_24(double *state, double *unused, double *out_5775267180984789848);
void car_H_24(double *state, double *unused, double *out_273512181199320108);
void car_h_30(double *state, double *unused, double *out_940710322681338449);
void car_H_30(double *state, double *unused, double *out_8815827759297796213);
void car_h_26(double *state, double *unused, double *out_1922794416016636561);
void car_H_26(double *state, double *unused, double *out_1842365901067876766);
void car_h_27(double *state, double *unused, double *out_3098231746361013839);
void car_H_27(double *state, double *unused, double *out_6641064447497371302);
void car_h_29(double *state, double *unused, double *out_539217781893008511);
void car_H_29(double *state, double *unused, double *out_4927701720627820269);
void car_h_28(double *state, double *unused, double *out_822702928747961705);
void car_H_28(double *state, double *unused, double *out_154697296441710305);
void car_h_31(double *state, double *unused, double *out_6649273621392976317);
void car_H_31(double *state, double *unused, double *out_1929783379683139886);
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);
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff
+13 -13
View File
@@ -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_8230036097863094971);
void pose_inv_err_fun(double *nom_x, double *true_x, double *out_8741051770711475830);
void pose_H_mod_fun(double *state, double *out_1900632188772248703);
void pose_f_fun(double *state, double dt, double *out_3077738493587277525);
void pose_F_fun(double *state, double dt, double *out_474426866180563475);
void pose_h_4(double *state, double *unused, double *out_616527671886839495);
void pose_H_4(double *state, double *unused, double *out_702684706889350599);
void pose_h_10(double *state, double *unused, double *out_767369525646024651);
void pose_H_10(double *state, double *unused, double *out_8347276505705953254);
void pose_h_13(double *state, double *unused, double *out_7518652466578138352);
void pose_H_13(double *state, double *unused, double *out_2509589118442982202);
void pose_h_14(double *state, double *unused, double *out_7727744869207997497);
void pose_H_14(double *state, double *unused, double *out_8183830522169091023);
void pose_err_fun(double *nom_x, double *delta_x, double *out_2551549382290402050);
void pose_inv_err_fun(double *nom_x, double *true_x, double *out_3575109948453160374);
void pose_H_mod_fun(double *state, double *out_2954011976512996711);
void pose_f_fun(double *state, double dt, double *out_4081841541460951824);
void pose_F_fun(double *state, double dt, double *out_2326707394449301144);
void pose_h_4(double *state, double *unused, double *out_5242858642703077087);
void pose_H_4(double *state, double *unused, double *out_1660615060416319653);
void pose_h_10(double *state, double *unused, double *out_8287724405821980303);
void pose_H_10(double *state, double *unused, double *out_8634670991932313772);
void pose_h_13(double *state, double *unused, double *out_936388540160520926);
void pose_H_13(double *state, double *unused, double *out_4872888885748652454);
void pose_h_14(double *state, double *unused, double *out_3784911557802666238);
void pose_H_14(double *state, double *unused, double *out_5623855916755804182);
void pose_predict(double *in_x, double *in_P, double *in_Q, double dt);
}
Binary file not shown.
Binary file not shown.
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More